我尝试使用下面的代码来等同于tensorflow中的张量:
import tensorflow as tf
import numpy as np
a = tf.placeholder(tf.float32, shape=[2,2])
b = tf.Variable(tf.zeros(shape = [1,1]))
sess = tf.Session()
b[0,0]=a[0,0]
sess.run(tf.initialize_all_variables())
但出现错误信息“‘RefVariable’对象不支持项目分配”。我该如何修改?
最佳答案
您必须创建一个执行分配并运行它的张量。您可以对切片进行分配:
assg = b[0,0].assign(a[0,0])
feed_dict = {a: np.array([[3,4],[5,6]])}
sess.run(assg, feed_dict=feed_dict)
print(sess.run(b)) # [[3.]]
因为你实际上想为整个 b 分配新值,你也可以只使用 tf.assign,但是你必须确保形状匹配,因为 a[0,0] 是一个数字,而 b是大小为 1x1 的矩阵。
assg = tf.assign(b, tf.reshape(a[0,0],shape=[1,1]))
feed_dict = {a: np.array([[3,4],[5,6]])}
sess.run(assg, feed_dict=feed_dict)
print(sess.run(b)) # [[3.]]
关于python - 在 Tensorflow 中等同 Subtensor 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54899974/