2017-06-09 48 views
2

在以下代碼中,None用於聲明佔位符的大小。爲什麼在無張量流的批量維中使用None?

x_data = tf.placeholder(tf.int32, [None, max_sequence_length]) 
y_output = tf.placeholder(tf.int32, [None]) 

據我所知,這個None是用來指定一個變量批量維度。但是,在每個代碼,我們有一個變量,顯示批量大小,如:

batch_size = 250 

因此,沒有任何理由在這樣的情況下使用None而不是簡單地宣佈佔位符?

x_data = tf.placeholder(tf.int32, [batch_size, max_sequence_length]) 
y_output = tf.placeholder(tf.int32, [batch_size]) 
+3

因此,您可以一次預測所有的測試樣本,甚至一次預測您的所有測試樣本。否則,對網絡的輸入總是必須是固定大小的批次。 –

+0

@ImanolLuengo謝謝!看起來很合理。如果您發佈答案,我希望接受它。 – Hossein

+0

添加了幾個更多的意見! –

回答

2

它只是使網絡的輸入沒有得到一定到一個固定大小的批次,您可以再次使用網絡學會預測是單實例或任意長的批次(如預測所有您的測試樣品一次)。

換句話說,它在訓練過程中並沒有太多的工作,因爲無論如何,批次通常都是固定的大小,但它使網絡在測試時更有用。

+1

作爲補充評論,我們在培訓期間的最終批次可能比'batch_size'少,因此它在培訓期間也可能有用。 – Hossein

+1

@Hossein當然!在sone應用程序中,批次是通過數據增加或隨機循環自動生成的,因此所有批次都將具有相同的大小。但是在單程方法中,最後一批肯定會有不同的大小!很高興指出。 –