2017-04-24 36 views
1

numpy的索引操作我想更新的张量的值,如:与Tensorflow

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

但是要得到一个错误说:

TypeError: 'Tensor' object does not support item assignment 

回答

0

看来ldream是tensorflow可变的,不幸的不能像numpy数组一样直接赋值。

要更新tensorflow张量的值,可以进行分配操作,然后运行(EVAL)该操作。这里是如何做到这一点的例子:

Tensorflow: How to modify the value in tensor

这样做的原因是,当你编写你的TF变量和操作,你实际上是“分期”他们在稍后的时间发生(如当你做sess.run);就像张量流量实际运行的蓝图一样。

+0

如果你要做的仅仅是连接另外一个答案,那么你应该关闭这个作为重复 –

+0

@facultyofmusic这个问题的答案是指修改tf.V良莠不齐,我想在通过使用索引和切片等与numpy的阵列基于张量来选择值e.g ldream = [X,:,Y,A,B] – thedlade

0

通过使用numpy的阵列创建布尔掩模固定此:

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

然后选择所需的索引和将它们标记为真

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

然后,使用tf.where更新期望指标使用ldream_mask