亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

了解 Flatten 在 Keras 中的作用并確定何時使用它

了解 Flatten 在 Keras 中的作用并確定何時使用它

繁星coding 2023-02-22 17:24:59
我正在嘗試了解為時間序列預測開發的模型。它使用一個 Con1D 層和兩個 LSTM 層,然后是一個密集層。我的問題是,它應該Flatten() 在 LSTM 和 Denser 層之間使用嗎?在我看來,輸出應該只有一個值,形狀為(None, 1),可以通過Flatten()在 LSTM 和 Dense 層之間使用來實現。沒有Flatten(),輸出形狀將為(None, 30, 1)?;蛘?,我可以從第二個 LSTM 層中刪除return_sequences=True,我認為這與Flatten(). 哪種方式更合適?它們會影響損失嗎?這是模型。model = tf.keras.models.Sequential([    tf.keras.layers.Conv1D(filters=32, kernel_size=3, strides=1, padding="causal", activation="relu", input_shape=(30 ,1)),    tf.keras.layers.LSTM(32, return_sequences=True),    tf.keras.layers.LSTM(32, return_sequences=True),    # tf.keras.layers.Flatten(),    tf.keras.layers.Dense(1),    ])這是沒有的模型摘要Flatten()Model: "sequential"_________________________________________________________________Layer (type)                 Output Shape              Param #   =================================================================conv1d (Conv1D)              (None, 30, 32)            128       _________________________________________________________________lstm (LSTM)                  (None, 30, 32)            8320      _________________________________________________________________lstm_1 (LSTM)                (None, 30, 32)            8320      _________________________________________________________________dense (Dense)                (None, 30, 1)             33        =================================================================Total params: 16,801Trainable params: 16,801Non-trainable params: 0_________________________________________________________________
查看完整描述

2 回答

?
DIEA

TA貢獻1820條經驗 獲得超3個贊

嗯,這取決于你想要達到的目標。我試著給你一些提示,因為我不是 100% 清楚你想要獲得什么。

如果您的 LSTM 使用return_sequences=True,那么您將返回每個 LSTM 單元格的輸出,即每個時間戳的輸出。如果您隨后添加一個密集層,其中一個將添加到每個 LSTM 層的頂部。

如果您將展平層與 一起使用return_sequences=True,那么您基本上是在刪除時間維度,就像(None, 30)您的情況一樣。然后,您可以添加一個致密層或任何您需要的層。

如果你設置return_sequences=False,你只會在你的 LSTM 的最后得到輸出(請注意,在任何情況下,由于 LSTM 的功能,它都是基于在之前的時間戳發生的計算),輸出將是這樣的(None, dim)其中dim等于您在 LSTM 中使用的隱藏單元數(即 32)。同樣,在這里,您可以簡單地添加一個帶有一個隱藏單元的密集層,以獲得您正在尋找的東西。


查看完整回答
反對 回復 2023-02-22
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

請在此處參考此鏈接>>類似問題

flatten()一般用在輸出層之前。最好在 LSTM 層的全部輸出上使用 flatten ...它可以在密集層之后而不是在 LSTM 層之后使用嗎?

我想通過這里的其他答案和評論向專柜學習。


查看完整回答
反對 回復 2023-02-22
  • 2 回答
  • 0 關注
  • 278 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號