2017-02-27 25 views
1

新的TensorFlow但我堅持這個佔位符聲明問題。定義佔位符x的區別究竟是什麼:TensorFlow佔位符維度 - 有什麼區別?

x = tf.placeholder(tf.float32, [None, seq_size]) 

與此相對嗎?

x = tf.placeholder(tf.float32, [None, seq_size, 1]) 

我在矩陣方面想。所以說,假設變量x有10個值,seq_size是3 - 第一個是10x3,第二個是10x3x1。爲什麼tensorflow會以不同的方式考慮它們?

回答

2

Tensorflow將以不同的方式考慮它的形狀驗證目的。 的矩陣乘法例如具有3×4大小的矩陣將是不可能與第二版本的尺寸1和3不匹配。 Tensorflow將能夠在圖形構建中檢測到這一點。

此外,在代碼可讀性方面,如果將來可能會更改此維度,那麼對於一般理解可能有額外的維度1。舉例來說,如果你的數據點是單變量的時間序列,採用

x = tf.placeholder(tf.float32, [None, seq_size, 1]) 

會更容易到你的結果與維d>1

x = tf.placeholder(tf.float32, [None, seq_size, d]) 

延伸到多元時間序列的所有代碼已經有了這額外的維度佔了。

+0

謝謝托馬斯,都清楚 – beginner

0
x = tf.placeholder(tf.float32, [None, seq_size, 1]) 

這裏'x'是一個佔位符,用於保存[任何東西,seq_size,1]的張量。這對於矩陣運算可以很好地完成,其中一些多維操作可以通過將它們提升到更高維矩陣而容易地執行。

P.S:形狀數組中元素的個數[無,seq_size] & [無,seq_size,1]可以相同。他們可以輕鬆地重塑對方。