I 've made a multilayer LSTM model that uses regression to predict next frame'的数据值 . 该模型在20个时期后完成 . 然后我得到一些预测并将它们与我的基本事实值进行比较 . 正如您在上图中看到的那样,预测会收敛到一个恒定值 . 我不知道为什么会这样 . 这是我到目前为止的模型:
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers import LSTM, BatchNormalization
from tensorflow.python.keras.initializers import RandomUniform
init = RandomUniform(minval=-0.05, maxval= 0.05)
model = Sequential()
model.add(LSTM(kernel_initializer=init, activation='relu', return_sequences=True, units=800, dropout=0.5, recurrent_dropout=0.2, input_shape=(x_train.shape[1], x_train.shape[2]) ))
model.add(LSTM(kernel_initializer=init, activation='relu', return_sequences=False, units=500, dropout=0.5, recurrent_dropout=0.2 ))
model.add(Dense(1024, activation='linear', kernel_initializer=init))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(Dense(1, activation='linear', kernel_initializer= 'normal'))
model.compile(loss='mean_squared_error', optimizer='rmsprop' )
model.summary()
EDIT1: 我将时期从20减少到3.结果如下:
通过比较2张图片,我可以得出结论,当时期数增加时,预测更有可能收敛到约-0.1的某个特定值 .
1 回答
因此,在尝试了不同数量的
LSTM
单位和不同类型的架构之后,我意识到当前的LSTM
单位数会导致模型学习如此缓慢,并且20个时期对于如此庞大的模型来说还不够 . 对于每一层,我改变了数量LSTM单位到64并且还移除了Dense(1024)
层并且将时期数从20增加到400并且结果非常接近地面实况值 . I should mention that the dataset used in the new model was different from the former one because I encountered some problems with that dataset . 这是新模型:你可以在这里看到预测:
它仍然不是最好的模型,但至少跑赢前者 . 如果您对如何改进它有任何进一步的建议,我们将不胜感激 .