无题
基于网站《动手学强化学习》,其中的代码是几年前的,而名为 Gym Lib 的 Lib 已经过时了。因此,需要更改的地方,这是 DQN 和其他变体的完整新代码。 如果您只想实现 DQN,则只需下载它。但是,在 hands_on_RL 中使用 gym 的其他算法上需要更改的部分是相同的。因此,在这里我们展示需要更改的部分,以帮助您更改其他算法
需要更改
1. 环境 ‘env_name-v0’ 已过期。您应该考虑升级到版本v1
env_name = 'CartPole-v1'
env = gym.make(env_name, render_mode='human')
2. env.seed(0) 没有被使用,你应该改到那里,并在后面加上 ‘[0]’
state = env.reset(seed = 0)[0]
3. 需要解包的值太多(预期为 4):next_state、reward、done、_ = env.step(action)
添加返回值
next_state, reward, done, _, __ = env.step(action)
4. 从 numpy.ndarrays 列表创建张量非常慢。请考虑使用 numpy.array() 将列表转换为单个 numpy.ndarray
def take_action(self. state)
....
'state = torch.tensor(np.array([state]), dtype=torch.float).to(self.device)'
....
5. 新版本 env 无法自动停止,因此我们需要添加一个计数器
....
for i_episode in range(int(num_episodes / 10)):
episode_return = 0
state = env.reset(seed=0)[0]
done = False
'steps = 0'
while not done 'and steps < 200':
'steps += 1'
....
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 JackZhang's Blog!