我想更新张量的值,如:
ldream[w,:,x,y,z] = 0
但不断收到错误说:
TypeError: 'Tensor' object does not support item assignment
答案 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
更新所需的索引