Matrix 张量流中的矩阵元处理
如何在tensorflow中执行以下操作Matrix 张量流中的矩阵元处理,matrix,indexing,element,variable-assignment,tensorflow,Matrix,Indexing,Element,Variable Assignment,Tensorflow,如何在tensorflow中执行以下操作 mat = [4,2,6,2,3] # mat[2] = 0 # simple zero the 3rd element 我不能使用[]括号,因为它只对常量有效,而对 变量。我也不能使用slice函数,因为它返回一个张量,而不能赋值给张量 import tensorflow as tf sess = tf.Session() var1 = tf.Variable(initial_value=[2, 5, -4, 0]) assignZerosOP =
mat = [4,2,6,2,3] #
mat[2] = 0 # simple zero the 3rd element
我不能使用[]括号,因为它只对常量有效,而对
变量。我也不能使用slice函数,因为它返回一个张量,而不能赋值给张量
import tensorflow as tf
sess = tf.Session()
var1 = tf.Variable(initial_value=[2, 5, -4, 0])
assignZerosOP = (var1[2] = 0) # < ------ This is what I want to do
sess.run(tf.initialize_all_variables())
print sess.run(var1)
sess.run(assignZerosOP)
print sess.run(var1)
你不能改变张量,但是,正如你所说,你可以改变一个变量 有三种模式可用于实现您的目标: (a) 用于直接戳到要更改的变量部分
import tensorflow as tf
a = tf.Variable(initial_value=[2, 5, -4, 0])
b = tf.scatter_update(a, [1], [9])
init = tf.initialize_all_variables()
with tf.Session() as s:
s.run(init)
print s.run(a)
print s.run(b)
print s.run(a)
[25-40]
[29-40]
[29-40]
(b) 创建张量的两个tf.slice()
s,不包括要更改的项,然后tf.concat(0[a,0,b])
将它们重新组合在一起
(c) 创建类似于(a)的b=tf.zero\u,然后使用tf.select()
从a
中选择所需的项目,以及从b
中选择所需的零
我之所以加入(b)和(c),是因为它们处理的是正态张量,而不仅仅是变量。多谢了,这肯定是有帮助的,我可以处理,但这会有点复杂。如果我真的需要改变张量呢?没有办法吗?我想实现网络可视化,我需要将图像传播到激活层,除随机激活外,将所有激活置零,然后将其传播回来。张量是不可变的。一般来说,如果您想要保存和更改状态,您可以将其存储在一个变量中,您可以对该变量进行变异。但除此之外,您只需创建一个从原始张量派生的新张量并使用它。在您描述的案例中,这可能就是方法。谢谢您的回答。我解决了这个问题,使用了一个新的张量,这个张量是按照您的建议从原始张量派生的。我找不到tf。请在我的tensorflow 1.0.0版中选择。是否有替换?tf.select
更改为tf.where
,与tf 1.0后的np.where
一样。
import tensorflow as tf
a = tf.Variable(initial_value=[2, 5, -4, 0])
b = tf.scatter_update(a, [1], [9])
init = tf.initialize_all_variables()
with tf.Session() as s:
s.run(init)
print s.run(a)
print s.run(b)
print s.run(a)