首頁 >後端開發 >Python教學 >Keras 中的密集層會使輸入張量變平嗎?

Keras 中的密集層會使輸入張量變平嗎?

Barbara Streisand
Barbara Streisand原創
2024-10-21 07:53:301075瀏覽

Does a Dense Layer in Keras Flatten the Input Tensor?

了解 Keras 的密集層行為

在 Keras 中,密集層在其權重和輸入張量之間執行點積。如文件中所述,預設行為是在輸入張量的秩大於 2 時壓平輸入張量。但是,與本文檔相反,密集層實際上應用於輸入張量的最後一個軸。

讓我們用一個例子來澄清。假設一個具有 m 個單位的密集層應用於形狀為 (n_dim1, n_dim2, ..., n_dimk) 的輸入張量。輸出形狀將為 (n_dim1, n_dim2, ..., m)。

此觀察結果意味著 TimeDistributed(Dense(...)) 和 Dense(...) 在功能上是等效的。此外,應用具有共享權重的密集層會產生有趣的效果。考慮以下玩具網路:

<code class="python">model = Sequential()
model.add(Dense(10, input_shape=(20, 5)))

model.summary()</code>

下面的模型摘要僅顯示60 個可訓練參數:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 20, 10)            60        
=================================================================
Total params: 60
Trainable params: 60
Non-trainable params: 0
_________________________________________________________________

發生這種情況是因為密集層中的每個單元都連接到每個單元的所有五個元素輸入中具有相同權重的行。因此,只需要 10 × 5 10(每單位偏差參數)= 60 個參數。

為了進一步說明此行為,請考慮以下視覺表示:

[密集層的圖像Keras 中二維或多維輸入上的應用]

在此圖像中,Dense 層(以紅色顯示)應用於三維輸入張量。輸出張量也是三維的,輸入張量中的每一列獨立地對應到輸出張量中的一列。

以上是Keras 中的密集層會使輸入張量變平嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn