使用莫烦的DDPG程序,切换到自己的场景之后神经网络输出边界值。解决步骤,供以后学习:
1.使用自己的场景,更换为DQN算法,发现算法快速收敛,证明场景没有问题;
2.将tanh函数换成了relu函数,仍然输出边界值,说明可能不是tanh函数的问题;
3.莫凡的程序中,对神经网络输出的动作值进行了处理,即
a = tf.layers.dense(net, self.a_dim, activation=tf.nn.tanh, name='a', trainable=trainable)
return tf.multiply(a, self.a_bound, name='scaled_a')
我把a_boud改成了1,就是直接输出神经网络的结果,这个结果的范围为[-1,1];然后在与环境交互阶段再乘上我的动作系数0.06,就是把动作的范围映射为[-0.06.0.06]。
4.在储存经验的时候,储存的是没有乘上动作系数的a值。
经过上面的修改,算法能够收敛。