簡體   English   中英

Tensorflow - 構建 LSTM 模型 - 需要 tf.keras.layers.Dense()

[英]Tensorflow - building LSTM model - need for tf.keras.layers.Dense()

Python 3.7 張量流

我正在嘗試使用Tensorflow進行時間序列預測

我知道第二行創建了一個LSTM RNN,即長短期記憶類型的循環神經網絡。

為什么我們最后需要添加一個Dense(1)層?

single_step_model = tf.keras.models.Sequential()
single_step_model.add(tf.keras.layers.LSTM(32, input_shape=x_train_single.shape[-2:]))
single_step_model.add(tf.keras.layers.Dense(1))

Dense()教程說

Dense 實現操作: output = activation(dot(input, kernel) + bias)其中activation是作為激活參數傳遞的逐元素激活函數, kernel是層創建的權重矩陣, bias是創建的偏置向量按層(僅當 use_bias 為 True 時適用)。

您想在此處重新表述或詳細說明對Dense()嗎?

以下行

single_step_model.add(tf.keras.layers.LSTM(32, input_shape=x_train_single.shape[-2:]))

創建一個 LSTM 層,它將大小為 #features 的每個輸入步驟轉換為大小為 32 的潛在表示。您想要預測單個值,因此您需要將這個大小為 32 的潛在表示轉換為單個值。 因此,您添加以下行

single_step_model.add(tf.keras.layers.Dense(1))

它在輸出中添加了一個帶有一個神經元的密集層(全連接神經網絡),顯然,它會產生一個值。 將其視為將更高維度的中間結果轉換為最終結果的一種方式。

在本教程中,您正在關注時間序列預測,他們正在嘗試預測溫度(提前 6 小時)。 為此,他們使用LSTM然后是Dense層。

single_step_model = tf.keras.models.Sequential()
single_step_model.add(tf.keras.layers.LSTM(32, input_shape=x_train_single.shape[-2:]))
single_step_model.add(tf.keras.layers.Dense(1))

Dense層只不過是一個常規的全連接 NN 層。 在這種情況下,您將輸出維度降低到 1,這應該代表與您嘗試預測的溫度的某種比例(不必是線性的)。 您也可以使用其他層。 看看, Keras 層

如果您對 LSTM 的輸入和輸出形狀感到困惑,請查看I/O Shape

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM