尝试将两次分配给 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]
我在 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]