2017-08-08 70 views
0

我有(2×1)可变张量我定义为:平铺TensorFlow中的变量张量是否会创建新变量?

W = tf.Variable(tf.random_normal([2, 1])) 

有因此是在(2×1)矢量2名的变量。然后我继续平铺张量,如下所示:

W = tf.tile(W,tf.constant([1,3])) 

我们现在有一个(2x3)张量。我的问题是这样的:

我们知道有6个独特的变量吗?或者2个独特的变量在3列上平铺?

+0

你可以看一下tf.get_default_graph的'输出()as_graph_def()'为了什么实际图形是。你将有一个'变量'的操作和一个'tile'的操作,它们相互连接,所以只需一个变量 –

回答

1

它的行为如你所愿:原始变量是平铺的,并且没有变量创建。这是很容易检查:

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