2017-11-11 164 views

回答

2

None表示此維度是可變的。

keras模型中的第一個維度始終是批量大小。除非在特定情況下(例如,在使用stateful=True LSTM層時),否則不需要固定的批處理大小。

這就是爲什麼在定義模型時經常會忽略這個維度。例如,當您定義input_shape=(100,200)時,實際上您忽略了批量大小並定義了「每個樣本」的形狀。在內部,形狀將爲(None, 100, 200),允許可變的批量大小,批次中的每個樣品的形狀爲(100,200)

批量大小將在fitpredict方法中自動定義。


其他None尺寸:

不僅批量尺寸可爲None,但一些其他的方面。例如,在預期輸入爲(batchSize, height, width, channels)的2D卷積網絡中,可以具有諸如(None, None, None, 3)之類的形狀,從而允許可變圖像大小。

在經常性網絡和1D卷積,您還可以使length/timesteps尺寸可變的,形狀,如(None, None, featuresOrChannels)

+0

謝謝! 如果我有3個輸入的特徵號是4並且批號是1,那麼在具有5個神經元的密集層(5)之後,我從每5個神經元得到一個數字。所以我最終得到(1,5)輸出尺寸是不是? –

+0

我不明白「哪個功能號碼是4的3個輸入」。但是'密集(5)'將總是將最後一個維度轉化爲5並重復其他維度。 '(batch,4)'的輸入形狀將在'(batch,5)'中重新生成。和'(batch,timesteps,4)'的輸入形式將會產生'(batch,timesteps,5)'。 –

+0

噢謝謝你!它幫助我很多:) –