gpt4 book ai didi

tensorflow:为什么collect_nd是可区分的?

转载 作者:行者123 更新时间:2023-12-04 04:09:45 29 4
gpt4 key购买 nike

我正在研究一个tensorflow网络,该网络为CartPole open-ai env实现了强化学习。

网络为策略梯度代理实现likelihood ratio approach

事实是,策略丢失是使用gather_nd op定义的!在这里,看看:

    ....
self.y = tf.nn.softmax(tf.matmul(self.W3,self.h2) + self.b3,dim=0)
self.curr_reward = tf.placeholder(shape=[None],dtype=tf.float32)
self.actions_array = tf.placeholder(shape=[None,2],dtype=tf.int32)
self.pai_array = tf.gather_nd(self.y,self.actions_array)
self.L = -tf.reduce_mean(tf.log(self.pai_array)*self.curr_reward)

然后,他们针对网络的所有参数采用这种损耗的导数:
    self.gradients = tf.gradients(self.L,tf.trainable_variables())

怎么会这样??我认为神经网络的整个问题总是与 cross-entropy这样的可区分操作一起工作,并且从未做过像根据随机选择且显然不可区分的 self.y选择 self.actions_array索引这样的奇怪事情。

我在这里想念什么?谢谢!

最佳答案

如果参数已收集,则渐变为1,否则为0。收集运算符的一个用例是像稀疏的一热点矩阵乘法一样工作。第二个参数是稀疏矩阵的密集表示,您只需选择正确的行即可将其与第一个参数“相乘”。

关于tensorflow:为什么collect_nd是可区分的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45701722/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com