使用 np.save 和 np.load 保存和加载 keras.callbacks.History 对象

数据挖掘 机器学习 Python 神经网络 深度学习 喀拉斯
2021-09-17 21:33:58

我一直在 keras 中保存我的训练历史,如下所示:

history = model.fit(X_train, Y_train, epochs=700, batch_size=128,validation_data=(X_cv, Y_cv))

np.save('./history_sim#', history)

然后,我尝试从各种模拟中加载训练历史记录,以便打印损失与时期等数据,如下所示:

history = np.load('history_sim#.npy')

当我尝试加载训练历史时,我收到以下错误消息:

"ValueError: Unknown metric function:precision"

我很担心我现在失去了所有的训练历史。培训需要几天时间,我的时间有点紧张。数据是否丢失或有什么方法可以从我保存的 .npy 文件中获取数据?

我已经发现如果我按如下方式保存/加载它会完美运行:

np.save('./history_sim#', history.history)
np.load('history_sim#').item()

我将在其余的模拟中这样做,但已经有一些以第一种方式保存,我没有时间重新运行它们。

谢谢!

附加信息:

import keras_metrics

# Calculate precision for the second label.
precision = keras_metrics.precision(label=1)

# Calculate recall for the first label.
recall = keras_metrics.recall(label=0)

opt = Adam(lr=0.05, beta_1=0.9, beta_2=0.999, decay=0.0)
model.compile(loss='binary_crossentropy', optimizer=opt, metrics=[precision, recall])
2个回答

allow_pickle=True在 np.load 中使用

>>>np.save("a.npy",his)
>>>item = np.load("a.npy",allow_pickle=True).item()

未经测试,但我没有足够的声誉发表评论:

您可能必须首先将历史记录转换为 numpy 数组。

import numpy
numpy_history = numpy.array(history)
numpy.save("loss_history", numpy_history)