当前位置:  开发笔记 > 编程语言 > 正文

在特定时期保存Keras模型

如何解决《在特定时期保存Keras模型》经验,为你挑选了1个好方法。

我正在使用Keras对我的数据集进行一些培训,并且每次都要不断运行以找到获得最佳结果所需的时期数是很费时间的。我尝试使用回调来获得最佳模型,但它无法正常工作,通常停止得太早。另外,保存每N个时期对我来说不是一个选择。

我想要做的是在完成某些特定的时期后保存模型。举例来说,结束后epoch = 150,它将另存为model.save(model_1.h5),之后epoch = 152,将另存为,model.save(model_2.h5)等等。

有办法在Keras中实现这一点吗?我已经在寻找一种方法,但到目前为止还没有运气。

感谢您的帮助/建议。



1> Mikhail Step..:

您可以使用回调,例如

import keras

class CustomSaver(keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs={}):
        if epoch == 2:  # or save after some epoch, each k-th epoch etc.
            self.model.save("model_{}.hd5".format(epoch))

on_epoch_end在每个时代结束时被调用;epoch是一个纪元,后一个参数是一个日志(您可以在docs中了解其他回调方法)。将逻辑放入此方法中(例如,它尽可能简单)。

创建保护对象并将其放入fit方法中:

import keras
import numpy as np

inp = keras.layers.Input(shape=(10,))
dense = keras.layers.Dense(10, activation='relu')(inp)
out = keras.layers.Dense(1, activation='sigmoid')(dense)
model = keras.models.Model(inp, out)
model.compile(optimizer="adam", loss="binary_crossentropy",)

# Just a noise data for fast working example
X = np.random.normal(0, 1, (1000, 10))
y = np.random.randint(0, 2, 1000)

# create and use callback:
saver = CustomSaver()
model.fit(X, y, callbacks=[saver], epochs=5)

bash

!ls
Out:
model_2.hd5                     

因此,它有效。

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有