DRL 训练循环
为了让智能体能够反复与环境交互,您需要搭建一个训练循环。
许多 DRL 算法都有如下核心结构:
- 按回合进行循环
- 在每个回合内按步数进行循环
- 每一步选择一个动作、计算损失,并更新网络
这里已为您提供占位用的 select_action() 和 calculate_loss() 函数,便于代码运行。上一练习中定义的 Network 和 optimizer 也可直接使用。
本练习是课程的一部分
Python 中的深度强化学习
练习说明
- 确保外层循环(遍历回合)运行 10 个回合。
- 确保内层循环(遍历步数)一直运行到该回合结束为止。
- 在
env环境中执行select_action()选出的动作。 - 在每次内层循环结束时,在开始下一步之前先更新状态。
交互式实操练习
通过完成这段示例代码来试试这个练习。
env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
state, info = env.reset()
done = False
# Run through steps until done
while ____:
action = select_action(network, state)
# Take the action
next_state, reward, terminated, truncated, _ = ____
done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Update the state
state = ____
print(f"Episode {episode} complete.")