2017-02-20 30 views
0

我是tensorflow的新手。我在練習編碼tutorial code。大部分代碼對我來說都有意義,但在某些時候我陷入了困境。tensorflow允許我指定可變長度維的方式似乎不一致

import tensorflow as tf 
x = tf.placeholder("float", [None, n_steps, n_input]) 
x = tf.transpose(x, [1, 0, 2]) 
x = tf.reshape(x, [-1, n_input]) 

隨着tf.placholder功能我不得不與None指定可變長度dimesion。但與tf.reshape我不得不使用-1,而不是None。在這兩個函數的文檔中,兩個相關參數的名稱都是shape。所以我覺得在這裏迷路了。他們真的有不同的含義嗎?還是僅僅是tensorflow開發者的一個小設計錯誤?

回答

2

你可以這樣理解它:在一個佔位符中,值「None」表示:「可以是任何值」。就像你的情況一樣:你的批量大小可以是任何東西。 在一個重塑函數中,-1表示「無論什麼值都可以使這個形狀起作用」。在你的情況下,你的x得到了形狀(batch * n_steps),因爲這是形狀x需要適合矩陣中的相同數據。有趣的是:你可以在一個佔位符中使用多個None值(表示任何批量大小,圖像的任何寬度和高度)......但是你不能在重塑函數中使用多個-1值!

+0

特別是['-1']的形狀變成了一維... –

相關問題