gym-0.26.1
Pendulum-v1
Dueling DQN
因为还是
DQN,所以我们沿用double DQN,然后把Qnet换成VAnet。
其他的不变,详情参考前一篇文章。
class VA(nn.Module):"""只有一层隐藏层的A网络和V网络"""def __init__(self, state_dim, hidden_dim, action_dim):super().__init__()self.fc1 = nn.Linear(state_dim, hidden_dim)self.fc_A = nn.Linear(hidden_dim, action_dim)self.fc_V = nn.Linear(hidden_dim, 1)def forward(self, X):A = self.fc_A(F.relu(self.fc1(X)))V = self.fc_V(F.relu(self.fc1(X)))Q = V + A - A.mean(1).reshape(-1,1)return Q
action_dim = 11,和之前一样保持不变,然后看下结果。
运行结果如下:

相比于之前的DQN,学习更加稳定,return在总体上是比之前要高的。
同时q-value也是比之前要大。