首頁 >後端開發 >Python教學 >扁平化或重塑是否先於具有多維輸入的 Keras 密集層?

扁平化或重塑是否先於具有多維輸入的 Keras 密集層?

Susan Sarandon
Susan Sarandon原創
2024-10-21 07:57:02744瀏覽

Does Flatten or Reshape Precede a Keras Dense Layer with Multi-Dimensional Input?

輸入形狀錯誤:Keras 密集層中的扁平化與重塑

在典型的Keras 網路中,密集層期望扁平化的輸入資料單一維度。然而,當使用密集層和更高維度的輸入資料時,會出現一個常見錯誤。這可能會導致以下輸出:

<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>

理解差異

與文件相反,該文件指出在應用密集之前高維度輸入會被展平層, Keras 最近的更新改變了這種行為。此層現在獨立應用於輸入張量的最後一個軸。

在上面的範例中,輸入形狀為 (2, 3)。具有 4 個單元的 Dense 層分別應用於每一行,得到 (2, 4) 的輸出形狀。

意義與注意事項

此變更具有一定的影響意義:

  • 共享權重:中的每個單元都連接到具有相同權重的輸入。這意味著應用於多維輸入的 Dense 層有效地實現了跨行共享權重。
  • 與 TimeDistributed 等效: 對於時間序列數據,使用 TimeDistributed(Dense(...) ) 現在相當於單步預測任務的 Dense(...)。

視覺插圖

為了更好地理解,請考慮以下內容插圖:

[圖表,顯示如何將密集層圖像應用於多維輸入,並跨行共享權重]

結論

為了避免上述錯誤,請確保在應用之前對Dense 層的輸入進行扁平化。或者,在處理多維輸入時接受密集層的新行為,考慮其對某些網路架構的影響和潛在優勢。

以上是扁平化或重塑是否先於具有多維輸入的 Keras 密集層?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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