在张量流中操作矩阵元素
Manipulating matrix elements in tensorflow
如何在tensorflow中进行以下操作?
mat = [4,2,6,2,3] #
mat[2] = 0 # simple zero the 3rd element
我不能使用 [] 括号,因为它只适用于常量而不适用于
变量。我也不能使用 slice 函数,因为 returns 一个张量而你不能分配给一个张量。
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)
将打印
[2, 5, -4, 0]
[2, 5, 0, 0])
您无法更改张量 - 但是,如您所述,您可以更改变量。
您可以使用三种模式来完成您想要的:
(a) 使用tf.scatter_update
直接戳到你要改变的变量部分
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)
[ 2 5 -4 0]
[ 2 9 -4 0]
[ 2 9 -4 0]
(b) 创建两个 tf.slice()
张量,排除要更改的项,然后 tf.concat(0, [a, 0, b])
将它们重新组合在一起。
(c) 创建 b = tf.zeros_like(a)
,然后使用 tf.select()
从 a
中选择您想要的项目,以及从 b
中选择您想要的零。
我包括了 (b) 和 (c),因为它们适用于正态张量,而不仅仅是变量。
如何在tensorflow中进行以下操作?
mat = [4,2,6,2,3] #
mat[2] = 0 # simple zero the 3rd element
我不能使用 [] 括号,因为它只适用于常量而不适用于 变量。我也不能使用 slice 函数,因为 returns 一个张量而你不能分配给一个张量。
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)
将打印
[2, 5, -4, 0]
[2, 5, 0, 0])
您无法更改张量 - 但是,如您所述,您可以更改变量。
您可以使用三种模式来完成您想要的:
(a) 使用tf.scatter_update
直接戳到你要改变的变量部分
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)
[ 2 5 -4 0]
[ 2 9 -4 0]
[ 2 9 -4 0]
(b) 创建两个 tf.slice()
张量,排除要更改的项,然后 tf.concat(0, [a, 0, b])
将它们重新组合在一起。
(c) 创建 b = tf.zeros_like(a)
,然后使用 tf.select()
从 a
中选择您想要的项目,以及从 b
中选择您想要的零。
我包括了 (b) 和 (c),因为它们适用于正态张量,而不仅仅是变量。