Python Keras自定义回调以保存历史字典和回调顺序

Python Keras自定义回调以保存历史字典和回调顺序,python,tensorflow,keras,Python,Tensorflow,Keras,我想在每个时代保存整个训练历史词典。似乎keras.callbacks.History()在.History对象中生成了这个字典?我正在编写一个回调,以便在每个历元将字典保存为json,如下所示 class MyCallback(ks.callbacks.Callback): def __init__(self,model_folder_path): self.model_folder_path = model_folder_path def on_epoch_

我想在每个时代保存整个训练历史词典。似乎
keras.callbacks.History()
.History
对象中生成了这个字典?我正在编写一个回调,以便在每个历元将字典保存为json,如下所示

class MyCallback(ks.callbacks.Callback):
    def __init__(self,model_folder_path):
        self.model_folder_path = model_folder_path

    def on_epoch_end(self, epoch, logs={}):
        this_path = os.path.join(self.model_folder_path,"History epoch {:02d}.json".format(epoch))
        with open(this_path, 'w') as fh:
            json.dump(self.model.history.history, fh)
        print("Saved history to {}".format(this_path))

并添加到我的回调列表中。当我运行培训时,每个历史对象都缺少当前历元的历史记录-我假设这意味着
keras.callbacks.history()
callback在我的回调之后被调用,因此我的回调没有看到当前的更改。这是正确的吗?我可以指定我的回调在调用顺序中最后一个吗?同时我尝试了
keras.callbacks.csvloger
,但我想直接保存字典。我在GitHub上找到了一个链接-还有其他提示吗

要将模型的历史记录保存到文件中,而不是使用
json.dump
使用

    with open('/path_to_your_history', 'wb') as file_pi:
        pickle.dump(history.history, file_pi)

其中,历史记录是
model.fit()的输出。

问题不在于格式,而在于方法的调用顺序。