用值填充张量中的特定索引

sho*_*eta 3 python arrays machine-learning variable-assignment tensorflow

我是tensorflow的初学者。我创建了这个张量

z = tf.zeros([20,2], tf.float32)
Run Code Online (Sandbox Code Playgroud)

我想改变指数的值z[2,1],并z[2,2]1.0代替零。我怎样才能做到这一点?

Max*_*xim 6

确切要问的是不可能的,原因有两个:

  • z 是一个恒定的张量,无法更改。
  • 没有z[2,2],只有z[2,0]z[2,1]

但是,假设您要更改z为变量并修复索引,可以通过以下方式完成:

z = tf.Variable(tf.zeros([20,2], tf.float32))  # a variable, not a const
assign21 = tf.assign(z[2, 0], 1.0)             # an op to update z
assign22 = tf.assign(z[2, 1], 1.0)             # an op to update z

with tf.Session() as sess:
  sess.run(tf.global_variables_initializer())
  print(sess.run(z))                           # prints all zeros
  sess.run([assign21, assign22])
  print(sess.run(z))                           # prints 1.0 in the 3d row
Run Code Online (Sandbox Code Playgroud)