关于GYM的render mode = 'human’渲染问题
在使用render_mode = 'human’时,会出现无论何时都会自动渲染动画的问题,比如下述算法
此时就算是在训练过程中也会调用进行动画的渲染,极大地降低了效率,毕竟我的目的只是想通过渲染检测一下最终的效果而已
import Q_learning as ql
import gym
env = gym.make("CliffWalking-v0", render_mode='human')
Q = ql.train(env, 1000)
state = env.reset()[0]
env.render()
while True:
action = Q[state].argmax()
next_state, reward, done, _, _ = env.step(action)
state = next_state
if done:
break
env.close()
为了解决上述问题,可以采用如下的方法
在开始将mode设置为none,当想要渲染时再设置为human
import Q_learning as ql
import gym
# 在训练期间关闭渲染
env = gym.make("CliffWalking-v0", render_mode=None)
Q = ql.train(env, 1000)
# 训练结束后开启渲染
env = gym.make("CliffWalking-v0", render_mode='human')
state = env.reset()[0]
env.render()
while True:
action = Q[state].argmax()
next_state, reward, done, _, _ = env.step(action)
state = next_state
if done:
break
env.close()