Python/Keras - 访问ModelCheckpoint回调

abu*_*nte 5 python keras

我正在使用Keras来预测时间序列.作为标准,我使用了20个时代.我想知道我的神经网络为20个时期中的每一个预测了什么.

通过使用model.predict,我得到了最后的预测.但是我想要所有的预测,或者至少是最后的10个预测(具有可接受的错误级别).

要访问我正在尝试Keras的ModelCheckpoint函数,但是之后我无法访问它.我正在使用以下代码:

model=Sequential()

model.add(GRU(input_dim=col,init='uniform',output_dim=20))
model.add(Dense(10))
model.add(Dense(5))
model.add(Activation("softmax"))
model.add(Dense(1))

model.compile(loss="mae", optimizer="RMSprop")

checkpoint=ModelCheckpoint(filepath='/Users/Alex/checkpoint.hdf5')

model.fit(X=predictor_train, y=target_train, nb_epoch=20, batch_size=batch,validation_split=0.1) #best validation split at 0.1
model.evaluate(X=predictor_train, y=target_train,batch_size=batch,show_accuracy=True)

print checkpoint
Run Code Online (Sandbox Code Playgroud)

客观地说,我的问题是:

  • 我希望在运行代码后,我会在文件夹/ Users/Alex中找到一个名为checkpoint.hdf5的文件,但是我没有.我错过了什么?

  • 当我打印checkpoint出我得到的是一个keras.callbacks.ModelCheckpoint object at 0x117471290.有没有办法打印我想要的东西?代码怎么样?

非常感激您的帮忙 :)

Mat*_*gro 11

这段代码有两个问题:

  • 您没有将回调传递给模型的拟合方法.这是通过关键字参数"callbacks"完成的.
  • 文件路径应包含占位符(如"{epoch:02d} - {val_loss:.2f}",与Keras的str.format一起使用,以便将每个纪元保存到不同的文件中.

所以正确的版本应该是这样的:

checkpoint = ModelCheckpoint(filepath='/Users/Alex/checkpoint-{epoch:02d}-{val_loss:.2f}.hdf5')

model.fit(X=predictor_train, y=target_train, nb_epoch=20,
         batch_size=batch,validation_split=0.1, callbacks=[checkpoint])
Run Code Online (Sandbox Code Playgroud)

您还可以在分配给该关键字的列表中添加其他类型的回调.

不幸的是,回调对象不存储历史信息,因此无法从中恢复.