尝试以十为单位给同一个数组变量赋值两次

2024-04-25 05:43:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Tensorflow中创建了一个简单的数组变量,并试图找到一种方法来多次赋值。我知道为了在TF中执行赋值,您需要使用tf.assign函数。问题是它返回的是“切片类型”,而不是变量类型。在

代码示例:

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

对于最后一行,我得到以下错误:

^{pr2}$

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


Tags: to方法类型tftensorflow数组arrayvariable
1条回答
网友
1楼 · 发布于 2024-04-25 05:43:58

只是不要将同一个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]

相关问题 更多 >