从Python文件中加载keras模型后,如何获取其历史记录?

A_t*_*ter 7 python keras

我已将keras模块另存为h5py文件,并正在从磁盘加载它。

在训练模型时,我使用:

from keras.models import Sequential

model = Sequential()
H = model.fit(....)
Run Code Online (Sandbox Code Playgroud)

但是现在我不训练它,而是用

model = load_model()
Run Code Online (Sandbox Code Playgroud)

我怎样才能Hmodel变量?不幸的是它没有history我可以调用的参数。是否因为“保存模型”功能不保存历史记录?

Jak*_*kob 7

不幸的是,看来Keras尚未实现直接从加载的模型加载历史记录的可能性。相反,您必须预先设置它。这就是我使用它的方式CSVLogger(实际上很方便地将整个训练历史记录存储在一个单独的文件中。这样,您始终可以稍后再返回并绘制所需的任何历史记录,而不必依赖于变量,可以很容易地将其丢失存储在内存):

首先,我们必须在开始培训之前设置记录器。

from keras.callbacks import CSVLogger

csv_logger = CSVLogger('training.log', separator=',', append=False)
model.fit(X_train, Y_train, callbacks=[csv_logger])
Run Code Online (Sandbox Code Playgroud)

现在,整个日志历史记录将存储在文件“ training.log”中(如果您遇到这种情况,可以通过调用来获得相同的信息H.history)。培训完成后,下一步将只是加载存储在此文件中的数据。你可以用熊猫来做到这一点read_csv

import pandas as pd
log_data = pd.read_csv('training.log', sep=',', engine='python')
Run Code Online (Sandbox Code Playgroud)

heron中,您可以像从csv_logger中加载数据一样对待存储在csv_logger中的数据K.history

Keras回调文档中的更多信息

  • 除了可以使用 `pandas` 读取它之外,是否还有一种方法可以将历史文件(用你提到的 `CSVLogger()` 保存)作为原始的 `History()` 对象加载回来?只是“好像”它是从“model.fit()”新计算出来的? (2认同)