Python Keras 1.2.2和Keras 2.2预测的差异
我试图用LSTM神经网络预测正弦曲线。我试了一段时间,但在预测方面,我并没有得到一个好的结果。在某些值之后,正弦曲线总是变得混乱。所以我从这篇文章中得到了一些启示: 即使根据之前的预测,他的正弦曲线也只有一点变化。所以我复制了他的密码,但得到了这个预测: 而不是他的: 过了一段时间,我意识到他用了:Python Keras 1.2.2和Keras 2.2预测的差异,python,tensorflow,machine-learning,keras,lstm,Python,Tensorflow,Machine Learning,Keras,Lstm,我试图用LSTM神经网络预测正弦曲线。我试了一段时间,但在预测方面,我并没有得到一个好的结果。在某些值之后,正弦曲线总是变得混乱。所以我从这篇文章中得到了一些启示: 即使根据之前的预测,他的正弦曲线也只有一点变化。所以我复制了他的密码,但得到了这个预测: 而不是他的: 过了一段时间,我意识到他用了: TensorFlow 1.0 Keras 1.2.2 所以我安装了Keras 1.2.2,看看它是否与tensorflow 1.2.0版有所不同,因为早期版本在windows上不可用。然后我
TensorFlow 1.0
Keras 1.2.2
所以我安装了Keras 1.2.2,看看它是否与tensorflow 1.2.0版有所不同,因为早期版本在windows上不可用。然后我得到了这个预言:
您可以看到正弦曲线更精确,因为它在[-1,1]的值范围内,但比他的预测偏移更多
我已经尝试过多次,结果非常相似。Keras 2.2预测振幅在一段时间后总是变小,而Keras 1.2保持在其值范围内。但我从来没有得到过像他那样好的预测
我需要更多的训练吗?我使用了20个纪元,批量大小为512。
我如何得到这样的预测?
新的Keras版本会给出更谨慎的预测吗
这是我使用的模型:
def build_model(layers):
model = Sequential()
model.add(LSTM(
input_shape=(None, layers[0]),
#units=layers[1],
output_dim=layers[1],
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(
layers[2],
return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(
output_dim=layers[3]))
model.add(Activation("linear"))
start = time.time()
model.compile(loss="mse", optimizer="rmsprop")
print("> Compilation Time : ", time.time() - start)
return model
使用这些参数:
model = build_model([1, 50, 100, 1])
整个代码可以在这里找到
您应该通过添加数据生成路线使代码完全可复制。在不同版本中,“退出”的应用方式可能有所不同。LSTMCell的实现方式也可能有所不同。此外,初始重量、勒宁率、衰变率等之间可能存在很多差异……我同意@desertnaut,如果我有所有代码,我很乐意对此进行调查@我已经用完整的代码更新了帖子