我在 env 渲染中遇到错误 - env.render()

Nat*_*sha 13 machine-learning python-3.x deep-learning openai-gym

我试图在渲染时实现 Atari Games,但出现如下错误:

line 283, in render
    raise error.Error(
gym.error.Error: render(mode='human') is deprecated. Please supply `render_mode` when constructing your environment, e.g., gym.make(ID, render_mode='human'). The new `render_mode` keyword argument supports DPI scaling, audio, and native framerates.
Run Code Online (Sandbox Code Playgroud)

我收到的完整错误的屏幕截图附在此处

我的代码如下:

episodes = 5

for episode in range(1, episodes+1):
state = env.reset()
done = False
score = 0 

while not done:
    env.render()
    action = random.choice([0,1,2,3,4,5])
    n_state, reward, done, info = env.step(action)
    score+=reward
print('Episode:{} Score:{}'.format(episode, score))
env.close()
Run Code Online (Sandbox Code Playgroud)

堆栈溢出中有一个类似的帖子,其中给出的解决方案是:

pip install pyglet==1.2.4
Run Code Online (Sandbox Code Playgroud)

不幸的是这对我来说也不起作用。

Nat*_*sha 17

我自己已经想出来了。render_mode='human'解决方案是通过更新来更改我们正在工作的环境env

env = gym.make('SpaceInvaders-v0', render_mode='human')
Run Code Online (Sandbox Code Playgroud)

完整代码:

 import gym
 import random
 import time
 env = gym.make('SpaceInvaders-v0', render_mode='human')
 height, width, channels = env.observation_space.shape
 actions = env.action_space.n
 env.unwrapped.get_action_meanings()
 episodes = 5
 for episode in range(1, episodes+1):
    state = env.reset()
    done = False
    score = 0 
 while not done:
    time.sleep(0.1)
    action = random.choice([0,1,2,3,4,5])
    n_state, reward, done, info = env.step(action)       
    score+=reward
print('Episode:{} Score:{}'.format(episode, score))
env.close()
Run Code Online (Sandbox Code Playgroud)