始める無料で始める

ポリシーネットワークのアーキテクチャ

後でポリシー勾配エージェントの学習に使える、Policy Network のアーキテクチャを構築しましょう。

ポリシーネットワークは状態を入力として受け取り、アクション空間における確率を出力します。Lunar Lander 環境では離散アクションが4つあるため、各アクションに対応する確率をそれぞれ出力する必要があります。

この演習はコースの一部です

Pythonで学ぶDeep Reinforcement Learning

コースを見る

演習の手順

  • ポリシーネットワークの出力層のサイズを指定してください。柔軟性のため、実数値ではなく変数名を使用しましょう。
  • 最終層が確率を返すようにしてください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

class PolicyNetwork(nn.Module):
  def __init__(self, state_size, action_size):
    super(PolicyNetwork, self).__init__()
    self.fc1 = nn.Linear(state_size, 64)
    self.fc2 = nn.Linear(64, 64)
    # Give the desired size for the output layer
    self.fc3 = nn.Linear(64, ____)

  def forward(self, state):
    x = torch.relu(self.fc1(torch.tensor(state)))
    x = torch.relu(self.fc2(x))
    # Obtain the action probabilities
    action_probs = ____(self.fc3(x), dim=-1)
    return action_probs
  
policy_network = PolicyNetwork(8, 4)
action_probs = policy_network(state)
print('Action probabilities:', action_probs)
コードを編集して実行