我正在训练 LSTM 神经网络来预测期货合约的未来价格。我的输入是 100 个持仓量值和 100 个收盘价值,输出是 100 个后续收盘价。
模型看似逻辑正确,预测了大势,但输出数组却很平坦。 MAE 在 7e-4 左右,还不错,预测值在正确的范围内(例如 80,000 美元),但数组没有明显上升或下降;所有数字都非常接近 80,000 美元。
这是我的模型代码:
# Define inputs
input1 = Input(shape=(100, 1))
input2 = Input(shape=(100, 1))
# Create LSTM layers for each input
lstm1 = layers.LSTM(units=100, return_sequences=True)(input1)
lstm1 = layers.Dropout(0.2)(lstm1)
lstm1 = layers.LSTM(units=100, return_sequences=True)(lstm1)
lstm1 = layers.Dropout(0.2)(lstm1)
lstm1 = layers.LSTM(units=100)(lstm1)
lstm1 = layers.Dropout(0.2)(lstm1)
lstm2 = layers.LSTM(units=100, return_sequences=True)(input2)
lstm2 = layers.Dropout(0.2)(lstm2)
lstm2 = layers.LSTM(units=100, return_sequences=True)(lstm2)
lstm2 = layers.Dropout(0.2)(lstm2)
lstm2 = layers.LSTM(units=100)(lstm2)
lstm2 = layers.Dropout(0.2)(lstm2)
# Concatenate all LSTM outputs
merged = layers.concatenate([lstm1, lstm2])
# Add a Dense layer for the merged output
output = layers.Dense(100)(merged)
# Create and compile the model
model = Model(inputs=[input1, input2], outputs=output)
optimizer = Adam(learning_rate=0.01)
model.compile(loss='mse', optimizer=optimizer)
我可以做些什么来改进模型,使其生成更多动态预测?
感谢您的帮助!请为我的问题投票以提供帮助)
您已经尝试过更高的学习率了吗? 我可能会上升到 0.02。
标准化数据也会有所帮助。这些值非常高,因此对于模型来说,82000 到 90000 之间的步长并没有那么大。也许尝试最小/最大标准化。
神经网络经常会反复尝试 - 所以只需尝试一下并使用参数即可。