Python 在TensorFlow中平铺变量张量会创建新变量吗?
我有一个(2x1)变量张量,我定义为:Python 在TensorFlow中平铺变量张量会创建新变量吗?,python,machine-learning,tensorflow,Python,Machine Learning,Tensorflow,我有一个(2x1)变量张量,我定义为: W = tf.Variable(tf.random_normal([2, 1])) 因此,(2x1)向量中有2个变量。然后我继续平铺这个张量,如下所示: W = tf.tile(W,tf.constant([1,3])) 我们现在有一个(2x3)张量。我的问题是: 我们知道有6个唯一变量吗?或者这两个唯一变量是否在3列上平铺?它的行为与您预期的一样:原始变量平铺,没有创建变量。很容易检查: import tensorflow as tf W = tf
W = tf.Variable(tf.random_normal([2, 1]))
因此,(2x1)向量中有2个变量。然后我继续平铺这个张量,如下所示:
W = tf.tile(W,tf.constant([1,3]))
我们现在有一个(2x3)张量。我的问题是:
我们知道有6个唯一变量吗?或者这两个唯一变量是否在3列上平铺?它的行为与您预期的一样:原始变量平铺,没有创建变量。很容易检查:
import tensorflow as tf
W = tf.Variable(tf.zeros((2,1)))
Wt = tf.tile(W, (1,3))
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
print(Wt.eval())
# [[ 0. 0. 0.]
# [ 0. 0. 0.]]
W[0,0].assign(1).eval()
print(Wt.eval())
# [[ 1. 1. 1.]
# [ 0. 0. 0.]]
Wt
不是变量,无法赋值:
Wt[0,0].assign(1).eval()
# ValueError: Sliced assignment is only supported for variables
您可以查看
tf.get_default_graph().as_graph_def()
的输出,了解实际的图形是什么。您将有一个用于变量
的op和一个用于平铺
的op,它们彼此相连,因此只有一个变量