我自己在tensorflow中实现了ddpg,却遇到了一个神秘的错误,这花了我几天的时间思考,但仍然没有结果。
我将演员损失定义为
actor_loss = - tf.reduce_mean(self.critic_with_actor.Q)
其中self.critic_with_actor.Q
是critic
的输出,它的输入是从actor
获得的动作之一。问题是,actor
不会以任何方式接收任何渐变。这是相关的张量板信息的快照:
其中Tanh
是actor
的输出张量,即action
选择的actor
。 BiasAdd
是Tanh
的输入张量,其他只是actor
中的可训练变量。如您所见,Tanh
有渐变,而其他渐变则没有。
这是我的主要演员评论网络的架构
其中critic_1
对应于代码中的self.critic_with_actor
,该代码与critic
共享变量。
这是我的代码https://github.com/xlnwel/ddpg-bipedal/blob/f1f6ed8842f7f13254f77ff37d9d0d340a4650e0/tensorflow-imp/ddpg_tf.py#L37-L41。即使该错误存在,代码也应该能够运行(如readme.md所建议的那样)。