如何在张量流中更新张量内的子张量?

时间:2017-12-09 17:48:53

标签: python python-3.x tensorflow

我和MNIST一起工作,我有一个大小为[?,28,28,1]的渐变张量,我想把一些[28,28,1]子张量归零它,我该怎么做到这一点?

我知道我需要将子张量归零的索引(作为列表)。我尝试过这样的事情(如下所示),但scatter.update只能改变变量而不是张量。我也尝试堆叠所需的零和零的张量,但不能建立所需的结果。

dy_dx, = tf.gradients(loss, x_adv) zeroes = tf.zeros(dy_dx[0].get_shape(), tf.float32) dy_dx = tf.scatter_update(dy_dx, indices, zeroes)

谢谢!

1 个答案:

答案 0 :(得分:1)

我建议在你想要归零的位置和其他地方创建一个TensorFlow常量。然后,您可以创建一个使用tf.multiply进行常量和dy_dx的元素乘法的运算。根据图表的结构,您可能需要在下次调用dy_dx时将结果提供给session.run;您可以使用Feed数据替换任何Tensor,包括变量和常量。

顺便提一下,如果您只想将dropout应用于输入图层,可以使用tf.layers.dropout