我正在创建一个简单的顺序Keras模型,它将在100个批次中获取10k个输入 . 每个输入有3列,相应的输出是该行的总和 .
顺序模型有2层-LSTM(Stateful = true),Dense .
现在,在编译和拟合模型之后,我将其保存在“model.h5”文件中 .
然后,我读取保存的模型,并使用测试数据(size = 10k,batch_size = 100)调用model.predict .
Problem: 对于前400-500个输入,预测不能正常工作,其余的预测在val_loss非常低的情况下工作得非常好 .
Case1: 我使LSTM层无状态(即Stateful = False)在这种情况下,Keras为所有测试数据提供非常准确的输出 .
Case2: 如果我直接在创建的模型上应用model.predict,而不是保存然后再次读取,所有输出都准确到位 .
但是,我需要Stateful = True,而且,我想保存我的模型,然后稍后恢复该模型的工作 .
1.有什么方法可以解决这个问题吗?
2.另外,当我提供测试数据时,模型的准确度如何提高? (因为前400-500次测试提供的结果不准确,其余测试非常准确)
1 回答
您的问题似乎来自于丢失细胞的隐藏状态 . 在建模期间,它们可能会被重置,这可能会导致问题 .
所以(这有点麻烦),但你可以保存并加载你的网络
states
:i-th
图层是recurrent
图层):当然 - 最好将所有这些方法打包在某种物体中,例如类构造方法 .