LSTM神经网络输出平面预测数组

问题描述 投票:0回答:1

我正在训练 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)

我可以做些什么来改进模型,使其生成更多动态预测?

Neural network prediction is green,the real prices is red

感谢您的帮助!请为我的问题投票以提供帮助)

python tensorflow neural-network lstm
1个回答
0
投票

您已经尝试过更高的学习率了吗? 我可能会上升到 0.02。

标准化数据也会有所帮助。这些值非常高,因此对于模型来说,82000 到 90000 之间的步长并没有那么大。也许尝试最小/最大标准化。

神经网络经常会反复尝试 - 所以只需尝试一下并使用参数即可。

© www.soinside.com 2019 - 2024. All rights reserved.