微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DDPG Actor 更新Pytorch 实现问题

如何解决DDPG Actor 更新Pytorch 实现问题

这是来自 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() 之后,我认为关于评论家参数的梯度留在了评论家网络中。这不应该影响评论家的下一次更新吗?

如果可以,有什么解决办法?

解决方法

我发现了

self.critic_optimizer.zero_grad()

将之前的累积梯度归零。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。