如何获得Keras models';从Python中的文件加载后的历史记录?

如何获得Keras models';从Python中的文件加载后的历史记录?,python,keras,Python,Keras,我已将keras模型保存为h5py文件,现在想从磁盘加载它 培训我使用的模型时: from keras.models import Sequential model = Sequential() H = model.fit(....) 当模型训练完成后,我想用 model = load_model() 如何从model变量中获取H?不幸的是,它没有一个我可以直接调用的history参数。是否因为save\u model函数不保存历史记录?使用pickle保存历史记录对象引发了大量错误。事实

我已将
keras
模型保存为
h5py
文件,现在想从磁盘加载它

培训我使用的模型时:

from keras.models import Sequential

model = Sequential()
H = model.fit(....)
当模型训练完成后,我想用

model = load_model()

如何从
model
变量中获取
H
?不幸的是,它没有一个我可以直接调用的
history
参数。是否因为
save\u model
函数不保存历史记录?

使用
pickle
保存历史记录对象引发了大量错误。事实证明,您可以在
H.history
上使用
pickle
而不是
H
来保存历史文件


需要保存模型和历史文件有点烦人,但是使用
pickle
保存历史对象会引发大量错误。事实证明,您可以在
H.history
上使用
pickle
而不是
H
来保存历史文件


保存一个模型和一个历史文件有点烦人,但不管怎样不幸的是,Keras似乎没有实现直接从加载的模型加载历史的可能性。相反,你必须提前设置它。这就是我使用
CSVLogger
解决它的方法(实际上,将整个培训历史记录存储在一个单独的文件中非常方便。这样,您可以随时稍后返回并绘制您想要的任何历史记录,而不是依赖于存储在RAM中的变量):

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

from keras.callbacks import CSVLogger

csv_logger = CSVLogger('training.log', separator=',', append=False)
model.fit(X_train, Y_train, callbacks=[csv_logger])
整个日志历史记录现在将存储在文件“training.log”中(在您的情况下,通过调用
H.history
可以获得相同的信息)。当培训结束时,下一步就是加载存储在该文件中的数据。您可以使用pandas
读取\u csv

import pandas as pd
log_data = pd.read_csv('training.log', sep=',', engine='python')
从heron,您可以像从
K.history
加载数据一样处理存储在
log\u data
中的数据


更多信息参见

不幸的是,Keras似乎没有实现直接从加载的模型加载历史的可能性。相反,你必须提前设置它。这就是我使用
CSVLogger
解决它的方法(实际上,将整个培训历史记录存储在一个单独的文件中非常方便。这样,您可以随时稍后返回并绘制您想要的任何历史记录,而不是依赖于存储在RAM中的变量):

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

from keras.callbacks import CSVLogger

csv_logger = CSVLogger('training.log', separator=',', append=False)
model.fit(X_train, Y_train, callbacks=[csv_logger])
整个日志历史记录现在将存储在文件“training.log”中(在您的情况下,通过调用
H.history
可以获得相同的信息)。当培训结束时,下一步就是加载存储在该文件中的数据。您可以使用pandas
读取\u csv

import pandas as pd
log_data = pd.read_csv('training.log', sep=',', engine='python')
从heron,您可以像从
K.history
加载数据一样处理存储在
log\u data
中的数据


保存模型中的详细信息仅保留模型权重和体系结构<代码>历史对象是一个字典。您可以将字典另存为
json
文件,也可以使用
csvloger
回调将培训历史记录记录到文本文件中。保存模型只会保留模型权重和体系结构<代码>历史对象是一个字典。您可以将字典另存为
json
文件,也可以使用
CSVLogger
回调将培训历史记录记录到文本文件中。除了可以使用
pandas
读回外,是否还有方法加载历史记录文件(如您所述,使用
CSVLogger()
保存)作为原始
History()
对象?就像使用
csvloger
刚从
model.fit()
?@s.k计算出来一样,历史文件默认保存为.csv格式。如果我理解你这样加载的目的,那就是继续训练你的模型。然后,将参数
append=True
设置为
keras.callbacks.callbacks.CSVLogger(filename,separator=',',append=True)
,同时将
initial_epoch
参数指定给再次将模型拟合到数据时要继续训练的历元。请参阅文档以及。除了可以使用
pandas
将其读回外,是否还有方法将历史文件(如您所述使用
CSVLogger()
保存)加载回原始
history()
对象?就像使用
csvloger
刚从
model.fit()
?@s.k计算出来一样,历史文件默认保存为.csv格式。如果我理解你这样加载的目的,那就是继续训练你的模型。然后,将参数
append=True
设置为
keras.callbacks.callbacks.CSVLogger(filename,separator=',',append=True)
,同时将
initial_epoch
参数指定给再次将模型拟合到数据时要继续训练的历元。有关详细信息,请参阅文档。