0

这是来自https://github.com/MoritzTaylor/ddpg-pytorch/blob/master/ddpg.py实现,我猜大多数 ddpg 实现都是这样写的。

        
self.critic_optimizer.zero_grad()
state_action_batch = self.critic(state_batch, action_batch)
value_loss = F.mse_loss(state_action_batch, expected_values.detach())
value_loss.backward()
self.critic_optimizer.step()

# Update the actor network
self.actor_optimizer.zero_grad()
policy_loss = -self.critic(state_batch, self.actor(state_batch))
policy_loss = policy_loss.mean()
policy_loss.backward()
self.actor_optimizer.step()

然而,在 policy_loss.backwad() 之后,我认为相对于评论家参数,梯度留在评论家网络中。这不应该影响评论家的下一次更新吗?

如果是这样,可能的解决方案是什么?

4

1 回答 1

0

我发现

self.critic_optimizer.zero_grad()

将先前累积的梯度归零。

于 2021-07-23T01:02:41.863 回答