簡體   English   中英

LSTM層值錯誤:維度必須相等

[英]LSTM layer value error: dimension must be equal

我正在嘗試創建一個非常簡單的 2 層 LSTM model 用於順序預測。 輸入數據形狀是二維的。 我想填充我的輸入,但我不知道該怎么做,所以我手動填充了我的輸入數據。 這就是為什么 pad_inputs 被注釋掉的原因。 但是,當我運行此 model 時,我收到一條錯誤消息:

ValueError: Dimensions must be equal, but are 45 and 400 for '{{node lstm_1/while_11/SelectV2}} = SelectV2[T=DT_FLOAT](lstm_1/while_11/Tile, lstm_1/while_11/lstm_cell_35/mul_2, lstm_1/while_11/Placeholder_2)' with input shapes: [?,45], [?,400], [?,400].
inputs = keras.Input(shape=(timesteps, len(paramlist)), dtype="float32")
# pad_inputs = preprocessing.sequence.pad_sequences(X_train_arr, value=-1, padding='post')(inputs)
mask_inputs = Masking(mask_value=-1.)(inputs)
l1 = LSTM(units=400, activation=activation_method_LSTM, use_bias=False, return_sequences=True, name='lstm_1')(inputs, mask=mask_inputs)
l2 = Dropout(0.3)(l1)
l3 = LSTM(units=400, activation=activation_method_LSTM, use_bias=False, return_sequences=True, name='lstm_2')(l2)
l4 = Dropout(0.3)(l3)
outputs = Dense(n_out)(l4)

model = keras.Model(inputs, outputs)

keras.utils.plot_model(model, 'final_approach_prediction_model.png', show_shapes=True)

model.summary()

l1 = LSTM(...)的問題。 LSTM 采用特定的輸入維度,它采用輸入或 mask_inputs。 正如錯誤所說的預期尺寸 45 和 400 但給定尺寸 [?,45] 和 [?, 400]

找到以下工作示例代碼

import tensorflow as tf
n_out = 24
samples, timesteps, features = 32, 10, 8
model = tf.keras.models.Sequential()
inputs = tf.keras.Input(shape=(timesteps, features), dtype="float32")
mask = tf.keras.layers.Masking(mask_value=-1.)(inputs)
l1 = tf.keras.layers.LSTM(units=400, activation='relu', use_bias=False, return_sequences=True, name='lstm_1')(mask)
l2 = tf.keras.layers.Dropout(0.3)(l1)
l3 = tf.keras.layers.LSTM(units=400, activation='relu', use_bias=False, return_sequences=True, name='lstm_2')(l2)
l4 = tf.keras.layers.Dropout(0.3)(l3)
outputs = tf.keras.layers.Dense(n_out)(l4)

model = keras.Model(inputs, outputs)

暫無
暫無

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

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