![](/img/trans.png)
[英]Problem with PettingZoo and Stable-Baselines3 with a ParallelEnv
[英]Add a TensorBoard metric from my PettingZoo environment
我正在使用 Tensorboard 查看我的代理正在玩的 PettingZoo 環境的進度。 我可以看到獎勵隨着時間的推移而增加,這很好,但我想添加其他特定於我的環境的指標。 即我希望 TensorBoard 向我展示更多包含我的指標的圖表以及它們如何隨着時間的推移而改進。
我能弄清楚如何做到這一點的唯一方法是將幾行插入到OnPolicyAlgorithm
的learn
方法中,該方法是 SB3 的一部分。 這行得通,我得到了我想要的圖表:
(底部的兩個圖表是我添加的。)
但顯然編輯庫代碼不是一個好習慣。 我應該在自己的代碼中進行修改,而不是在庫中。 目前是否有更優雅的方式將我的 PettingZoo 環境中的指標添加到 TensorBoard 中?
您可以添加回調以添加您自己的日志。 請參見下面的示例。 在這種情況下,每一步都會調用回調。 根據您的用例,您還可以使用其他回調。
import numpy as np
from stable_baselines3 import SAC
from stable_baselines3.common.callbacks import BaseCallback
model = SAC("MlpPolicy", "Pendulum-v1", tensorboard_log="/tmp/sac/", verbose=1)
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:
# Log scalar value (here a random variable)
value = np.random.random()
self.logger.record('random_value', value)
return True
model.learn(50000, callback=TensorboardCallback())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.