尝试将两次分配给 Tensorflow 中的同一个数组变量

Try to assign twice to the same array variable in Tensorflow

我在 Tensorflow 中创建了一个简单的数组变量,我试图找到一种方法来多次赋值。我知道为了在 TF 中做作业,你需要使用 tf.assign 函数。问题是它 returns 是 "sliced type" 而不是变量类型。

代码示例:

a = [-1.2, -5, 30.0, -7.5, 0.75]
v = tf.get_variable("v", shape=[5], initializer=tf.constant_initializer(a))
s = tf.Session()
c = c[0].assign(55) # Now c is not a regular variable anymore.
print(c)  # <tf.Tensor 'strided_slice/_assign:0' shape=(5,) dtype=float32_ref>
s.run(c)  # output: array([ 55.  ,  -5.  ,  30.  ,  -7.5 ,   0.75], dtype=float32)
c = c[0].assign(66)  # Trying to assign again to index 0 of array c

最后一行出现以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File 
"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 714, in assign
raise ValueError("Sliced assignment is only supported for variables")
ValueError: Sliced assignment is only supported for variables

我的问题是在 Tensorflow 中对一个变量进行多次赋值的正确方法是什么?

只是不要为不同的操作重复使用相同的 python 变量 c:

a = [-1.2, -5, 30.0, -7.5, 0.75]
c = tf.get_variable("v", shape=[5], initializer=tf.constant_initializer(a))

assign55 = c[0].assign(55)
assign66 = c[0].assign(66)
assign77 = c[1].assign(77)

with tf.Session() as sess:
  sess.run(tf.global_variables_initializer())

  sess.run(assign55)
  print(sess.run(c))  # [55.   -5.   30.   -7.5   0.75]

  sess.run(assign66)
  print(sess.run(c))  # [66.   -5.   30.   -7.5   0.75]

  sess.run(assign77)
  print(sess.run(c))  # [66.   77.   30.   -7.5   0.75]