我目前正在構建一個 LSTM 模型來預測未來 60 天的收盤價。當我嘗試擬合模型時出現以下錯誤:ValueError:無法擠壓dim [1],預期尺寸為1,'{{node Squeeze}} = SqueezeT = DT_FLOAT,squeeze_dims = [-得到60 1]' 輸入形狀:[?,60]。
下面是我的代碼
model = Sequential()
model.add(LSTM(64, activation='tanh', recurrent_activation='sigmoid', input_shape=(x_train.shape[1], x_train.shape[2]),
return_sequences=True))
model.add(LSTM(256, activation='tanh', recurrent_activation='sigmoid', return_sequences=False))
model.add(Dense(128))
model.add(Dropout(0.2))
model.add(Dense(y_train.shape[1]))
model.compile(optimizer=Adam(learning_rate=0.0001), loss='mse', metrics=['accuracy'])
model.summary()
history = model.fit(x_train, y_train, epochs=20, batch_size=16, validation_split=0.2, verbose=1)
x_train shape = (2066,300,2) y_train shape = (2066, 60, 1) 所以我使用 300 天的資料(2 個特征)來預測未來 60 天的收盤價。我不確定為什么會收到此錯誤并想尋求幫助。
uj5u.com熱心網友回復:
您缺少 的最后一個維度y_train。只需重塑您的輸出以匹配的尺寸y_train:
import tensorflow as tf
x_train = tf.random.normal((2066, 300, 2))
y_train = tf.random.normal((2066, 60, 1))
model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(64, activation='tanh', recurrent_activation='sigmoid', input_shape=(x_train.shape[1], x_train.shape[2]),
return_sequences=True))
model.add(tf.keras.layers.LSTM(256, activation='tanh', recurrent_activation='sigmoid', return_sequences=False))
model.add(tf.keras.layers.Dense(128))
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Dense(y_train.shape[1]))
model.add(tf.keras.layers.Reshape((y_train.shape[1], y_train.shape[2])))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001), loss='mse', metrics=['accuracy'])
model.summary()
history = model.fit(x_train, y_train, epochs=1, batch_size=16, validation_split=0.2, verbose=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/426838.html
上一篇:多標簽分類形狀問題
