【发布时间】:2017-04-24 02:18:03
【问题描述】:
我想更新张量的值,例如:
ldream[w,:,x,y,z] = 0
但不断收到错误提示:
TypeError: 'Tensor' object does not support item assignment
【问题讨论】:
标签: python numpy tensorflow deep-learning
我想更新张量的值,例如:
ldream[w,:,x,y,z] = 0
但不断收到错误提示:
TypeError: 'Tensor' object does not support item assignment
【问题讨论】:
标签: python numpy tensorflow deep-learning
ldream 似乎是一个 tensorflow 变量,遗憾的是不能像 numpy 数组那样直接赋值。
要更新 tensorflow 中张量的值,您可以进行赋值操作,然后运行(评估)该操作。这是一个关于如何执行此操作的示例:
Tensorflow: How to modify the value in tensor
这样做的原因是,当您对 tf 变量和操作进行编码时,您实际上是在“暂存”它们在以后发生(例如当您执行 sess.run 时);就像张量流将如何实际运行的蓝图。
【讨论】:
通过使用 numpy 数组创建布尔掩码来解决此问题:
ldream_mask = np.zeros(ldream.shape, dtype=np.bool)
然后选择所需的索引并将它们标记为 True
ldream_mask[w,:,x,y,z] = True
然后使用 tf.where 使用 ldream_mask 更新所需的索引
【讨论】: