我正在尝试使用 RNN 学习一个非常简单的序列(在 Keras 中实现)
输入序列是随机生成的介于 0 到 100 之间的整数:
x=np.random.randint(0,100, 大小=2000)
而时间 t 的预期输出值是第 (t-2) 个输入项,即:
y t =x t-2
这样一个示例数据集如下所示:
+------+------+ | X | 是 | +------+------+ | 0 | 不适用 | | 24 | 不适用 | | 33 | 0 | | 6 | 24 | | 78 | 33 | | 11 | 6 | | . | . | | . | . | +------+------+
注意:我在训练之前删除了 NA 行。
我正在尝试训练一个简单的 RNN 来学习这个序列,如下所示:
xtrain=np.reshape(df['X'], (df.shape[0], 1, 1))
#to match dimension of input shape for SimpleRNN layer.
model=Sequential()
model.SimpleRNN(2, input_shape=(None,1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.fit(x=xtrain, y=df['Y'], epochs=200, batch_size=5)
然而,我发现这个实现会导致一个局部最小值,它预测所有测试观察的常数值(~50)。
谁能帮我用正确的方法在 Keras 中实现一个基本的 RNN 来学习这个序列?