Dueling DQN 跑 Pendulum-v1

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,和之前一样保持不变,然后看下结果。
运行结果如下:
Dueling DQN 跑 Pendulum-v1_第1张图片

Dueling DQN 跑 Pendulum-v1_第2张图片

相比于之前的DQN,学习更加稳定,return在总体上是比之前要高的。

Dueling DQN 跑 Pendulum-v1_第3张图片

同时q-value也是比之前要大。

你可能感兴趣的:(RL,pytorch,gym,Dueling,DQN,Pendulum-v1)