開始使用免費開始

Critic 網路

Actor-Critic 方法需要兩個性質非常不同的神經網路。

Actor 網路的架構與你在 REINFORCE 中使用的 policy 網路相同,所以你可以重用 PolicyNetwork 類別。

然而,critic 網路是你尚未實作的部分。critic 目標是近似狀態價值函式 $V(s_t)$,而不是像 Q-Networks 一樣近似動作價值函式 $Q(s_t, a_t)$。

你現在要實作 Critic 網路模組,之後會在 A2C 中使用。

本練習屬於課程

Python 的深度強化學習

檢視課程

練習說明

  • 填入第二個全連接層的目標維度,使其輸出單一的狀態價值。
  • 取得資料通過 critic 網路 forward 傳遞後所回傳的數值。

動手互動練習

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

class Critic(nn.Module):
    def __init__(self, state_size):
        super(Critic, self).__init__()
        self.fc1 = nn.Linear(state_size, 64)
        # Fill in the desired dimensions
        self.fc2 = nn.Linear(____)

    def forward(self, state):
        x = torch.relu(self.fc1(torch.tensor(state)))
        # Calculate the output value
        value = ____
        return value

critic_network = Critic(8)
state_value = critic_network(torch.rand(8))
print('State value:', state_value)
編輯並執行程式碼