以前のバージョンの Gym では、env.render() を呼び出すと現在の画面が直接表示されていましたが、このメソッドは新しいバージョンでは無効です。現在の環境とトレーニング画像を表示する方法がいくつかあります。
1. render_model = "人間"
env = gym.make("CartPole-v1", render_mode = "human")
表示効果:
質問:
この設定では、プログラムはすべての実行画面を出力します。しかし、このステップでは問題が発生します。画像のレンダリングに時間がかかり、トレーニングが非常に遅くなるからです。強化学習の初期段階は試行錯誤の部分ですが、モデルの試行錯誤を毎回観察するのに時間を費やしたくないのは明らかであり、ほとんどの場合、観察したいトレーニング段階を観察したいと考えます。これには次の方法を使用できます。
2. render_model = "rgb_array"
env = gym.make("CartPole-v1", render_mode = "rgb_array")
このメソッドは env.render() に rgb_array を返します。この rgb_array は現在のステップの環境画面を表します。それを表示する必要がある場合は、レンダリングに cv2 を使用できます。以下のような方法:
# RGB 转化为BGR, cv2显示格式为BGR
img = cv2.cvtColor(env.render(), cv2.COLOR_RGB2BGR)
# 显示画面,test为窗口名称
cv2.imshow("test",img)
# 给cv2一定时间完成渲染,否则无法显示
cv2.waitKey(1)
表示効果は次のとおりです。