2017-08-08 95 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