4 votes

Récompense pour l'enregistrement de Stablebaselines3 avec un gymnase personnalisé

J'ai ce callback personnalisé pour enregistrer la récompense dans mon environnement vectoriel personnalisé, mais la récompense apparaît dans la console comme toujours [0] et n'est pas enregistrée du tout dans tensorboard.

class TensorboardCallback(BaseCallback):
    """
    Custom callback for plotting additional values in tensorboard.
    """

    def __init__(self, verbose=0):
        super(TensorboardCallback, self).__init__(verbose)

    def _on_step(self) -> bool:                
        self.logger.record('reward', self.training_env.get_attr('total_reward'))
        return True

Et ceci fait partie de la fonction principale

model = PPO(
        "MlpPolicy", env,
        learning_rate=3e-4,
        policy_kwargs=policy_kwargs,
        verbose=1,

# as the environment is not serializable, we need to set a new instance of the environment
loaded_model = model = PPO.load("model", env=env)
loaded_model.set_env(env)

# and continue training
loaded_model.learn(1e+6, callback=TensorboardCallback())
        tensorboard_log="./tensorboard/")

2voto

heovan1999 Points 67

Vous devez ajouter [0] comme l'indexation,

alors où vous avez écrit self.logger.record('reward', self.training_env.get_attr('total_reward')) il suffit d'indexer avec self.logger.record('reward', self.training_env.get_attr ('total_reward')[0] )

class TensorboardCallback(BaseCallback):
    """
    Custom callback for plotting additional values in tensorboard.
    """

    def __init__(self, verbose=0):
        super(TensorboardCallback, self).__init__(verbose)

    def _on_step(self) -> bool:                
        self.logger.record('reward', self.training_env.get_attr('total_reward')[0])

        return True

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X