我目前正在开发一个 PPO 强化学习项目,使用 pytorch 和gymnasium 自定义环境。 Mi 的想法是,每 10 次训练迭代,就会显示一个包含状态轨迹和策略所采取的操作的图。问题是 matplotlib 图形仅在第一次正确显示,然后在下次出现时不会更新。
我之前的实现方式是这样的: 数字是环境类的一个属性。在自定义类的初始化过程中,我调用
plt.ion()
方法,然后调用 plt.subplots()
初始化Fig 和axes 属性。 10 次迭代后,图形内的轴将被清除,并使用 ax[i].step()
方法再次绘制。最后我调用 plt.pause(0.2) 和 plt.show()
。执行训练循环后重复该过程。
问题很可能是我不太了解 matplotlib 包的逻辑,解决这个问题的方法是更改两三行代码。我会感激每一个建议。
几乎没有什么可继续的,所以我建议首先展示您使用的一些代码以及到底发生了什么。
您提到同时使用 plt.ion 和 plt.show ,这不是必需的,因为 ion 是 matplotlib 的交互模式,这意味着数字会自动更新,并且不需要使用 plt.show 。
此外,您正在使用健身房。 Gym 具有渲染人物的内置功能。
import gym
import time
from IPython.display import clear_output
env = gym.make("Taxi-v3").env
env.render()
time.sleep(10)
clear_output(wait=True)
env.render()