我定义了一个(2×1)的变量张量,如下所示:
W = tf.Variable(tf.random_normal([2, 1]))
因此,这个(2×1)的向量中有2个变量。接着,我对这个张量进行了平铺操作,如下所示:
W = tf.tile(W,tf.constant([1,3]))
现在我们有了一个(2×3)的张量。我的问题是:
我们现在是否有6个独特的变量?还是说2个独特的变量被平铺到3列上?
回答:
它的行为如你所预期的:原始变量被平铺,并没有创建新的变量。这很容易验证:
import tensorflow as tfW = 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