使用Tensorflow进行Numpy索引操作

时间:2017-04-24 02:18:03

标签: python numpy tensorflow deep-learning

我想更新张量的值,如:

ldream[w,:,x,y,z] = 0

但不断收到错误说:

TypeError: 'Tensor' object does not support item assignment

2 个答案:

答案 0 :(得分:0)

似乎ldream是张量流变量,遗憾的是,它不能像numpy数组那样直接赋值。

要更新张量流中的张量值,可以进行赋值操作,然后运行(eval)该操作。以下是如何执行此操作的示例:

Tensorflow: How to modify the value in tensor

这样做的原因是,当您对tf变量和操作进行编码时,实际上是“暂存”它们以后发生(例如当您执行sess.run时);就像tensorflow实际运行的蓝图一样。

答案 1 :(得分:0)

通过使用numpy数组创建布尔掩码来解决此问题:

ldream_mask = np.zeros(ldream.shape, dtype=np.bool)

然后选择所需的索引并将其标记为True

ldream_mask[w,:,x,y,z] =  True

然后使用tf.where使用ldream_mask

更新所需的索引