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