Matplotlib 图形在 RL 代理训练循环执行期间未更新

问题描述 投票:0回答:1

我目前正在开发一个 PPO 强化学习项目,使用 pytorch 和gymnasium 自定义环境。 Mi 的想法是,每 10 次训练迭代,就会显示一个包含状态轨迹和策略所采取的操作的图。问题是 matplotlib 图形仅在第一次正确显示,然后在下次出现时不会更新。

我之前的实现方式是这样的: 数字是环境类的一个属性。在自定义类的初始化过程中,我调用

plt.ion()
方法,然后调用
plt.subplots()
初始化Fig 和axes 属性。 10 次迭代后,图形内的轴将被清除,并使用
ax[i].step()
方法再次绘制。最后我调用 plt.pause(0.2) 和
plt.show()
。执行训练循环后重复该过程。

问题很可能是我不太了解 matplotlib 包的逻辑,解决这个问题的方法是更改两三行代码。我会感激每一个建议。

python matplotlib pytorch reinforcement-learning
1个回答
0
投票

几乎没有什么可继续的,所以我建议首先展示您使用的一些代码以及到底发生了什么。

您提到同时使用 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()
© www.soinside.com 2019 - 2024. All rights reserved.