开始使用免费开始使用

Critic 网络

Actor-Critic 方法需要两类截然不同的神经网络。

Actor 网络的结构与您在 REINFORCE 中使用的策略网络相同,因此可以复用 PolicyNetwork 类。

不过,critic 网络您此前还未实现。critic 的目标是逼近状态价值函数 $V(s_t)$,而不是 Q-Networks 用来逼近的动作价值函数 $Q(s_t, a_t)$。

接下来,您将实现用于 A2C 的 Critic 网络模块。

本练习是课程的一部分

Python 中的深度强化学习

查看课程

练习说明

  • 为第二个全连接层填写合适的维度,使其输出单个状态价值。
  • 通过 critic 网络进行前向传播,获取返回的价值。

交互式实操练习

通过完成这段示例代码来试试这个练习。

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)
编辑并运行代码