開始使用免費開始

訓練最精簡版 DQN

現在要在 Lunar Lander 環境中訓練一個最精簡版(Barebone)的 DQN 演算法。請記得這仍是基礎版,所以表現不會太好,但你之後會逐步改進。

就把它當作讓你的 Lunar Lander 成功在月球著陸的第一步吧!

你先前定義好的 q_network 實例已經可以使用。

在本課程的各個練習中,你的 Python 環境也提供 describe_episode() 函式,用來在每個 episode 結束時列印一些資訊,說明代理在該回合的表現。

本練習屬於課程

Python 的深度強化學習

檢視課程

練習說明

  • 在內層迴圈中選出代理的動作。
  • 計算 loss。
  • 執行一次梯度下降步驟來更新網路權重。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

for episode in range(10):
    state, info = env.reset()
    done = False
    step = 0
    episode_reward = 0
    while not done:
        step += 1     
        # Select the action
        action = ____(____, ____)
        next_state, reward, terminated, truncated, _ = (env.step(action))
        done = terminated or truncated
        # Calculate the loss
        loss = ____(q_network, state, action, next_state, reward, done)
        optimizer.zero_grad()
        # Perform a gradient descent step
        loss.____
        optimizer.____
        state = next_state
        episode_reward += reward
    describe_episode(episode, reward, episode_reward, step)
編輯並執行程式碼