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
也是比之前要大。