尽管问题非常简单,但我想知道为什么 LSTM 网络无法收敛到一个像样的解决方案。
import numpy as np
import keras
X_train = np.random.rand(1000)
y_train = X_train
X_train = X_train.reshape((len(X_train), 1, 1))
model= keras.models.Sequential()
model.add(keras.layers.wrappers.Bidirectional(keras.layers.LSTM(1, dropout=0., recurrent_dropout=0.)))
model.add(keras.layers.Dense(1))
optimzer = keras.optimizers.SGD(lr=1e-1)
model.build(input_shape=(None, 1, 1))
model.compile(loss=keras.losses.mean_squared_error, optimizer=optimzer, metrics=['mae'])
history = model.fit(X_train, y_train, batch_size=16, epochs=100)
在 10 个 epoch 之后,该算法似乎已达到其最优解(1e-4
RMSE 附近),并且无法进一步改进结果。
然而,具有相似参数的简单 Flatten + Dense 网络能够实现 1e-13 RMSE。
我很惊讶 LSTM 单元并没有简单地让值通过,我的参数有什么遗漏吗?LSTM 仅适用于分类问题吗?