我正在尝试使用Keras编写一个非常简单的RNN示例,但结果并不如预期。
我的X_train是一个重复的列表,长度为6000,例如:
我的y_train也是一个重复的列表,长度为6000,例如:
据我理解,循环神经网络应该能够正确地预测0.8和0.6,因为它可以记住两个时间步骤之前的X_train中的1。
我的模型:
有什么提示可以帮我理解这里的误解吗?
我的X_train是一个重复的列表,长度为6000,例如:
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, ...
我将其格式化为(6000, 1, 1)
的形状。我的y_train也是一个重复的列表,长度为6000,例如:
1, 0.8, 0.6, 0, 0, 0, 1, 0.8, 0.6, 0, ...
我将其格式化为(6000, 1)
的形状。据我理解,循环神经网络应该能够正确地预测0.8和0.6,因为它可以记住两个时间步骤之前的X_train中的1。
我的模型:
model=Sequential()
model.add(SimpleRNN(input_dim=1, output_dim=50))
model.add(Dense(output_dim=1, activation = "sigmoid"))
model.compile(loss="mse", optimizer="rmsprop")
model.fit(X_train, y_train, nb_epoch=10, batch_size=32)
这个模型可以成功地训练,最小损失只有0.1015,但是结果并不如预期。
test case --------------------------------------------- model result -------------expected result
model.predict(np.array([[[1]]])) --------------------0.9825--------------------1
model.predict(np.array([[[1],[0]]])) ----------------0.2081--------------------0.8
model.predict(np.array([[[1],[0],[0]]])) ------------0.2778 -------------------0.6
model.predict(np.array([[[1],[0],[0],[0]]]))---------0.3186--------------------0
有什么提示可以帮我理解这里的误解吗?