Python/Keras - 每N批次后保存模型权重

Dep*_*erp 4 keras

我是Python和Keras的新手,我已经成功构建了一个神经网络,可以在每个Epoch之后保存重量文件.但是,我想要更多粒度(我在时间序列中可视化层权重分布)并且希望在每N个批次之后保存权重,而不是每个时期.

有没有人有什么建议?

gro*_*ina 12

您可以创建自己的回调(https://keras.io/callbacks/).就像是:

from keras.callbacks import Callback

class WeightsSaver(Callback):
    def __init__(self, N):
        self.N = N
        self.batch = 0

    def on_batch_end(self, batch, logs={}):
        if self.batch % self.N == 0:
            name = 'weights%08d.h5' % self.batch
            self.model.save_weights(name)
        self.batch += 1
Run Code Online (Sandbox Code Playgroud)

我使用self.batch而不是提供的batch参数,因为后者在每个时期重新开始于0.

然后将其添加到您的健康呼叫中.例如,每5批保存一次:

model.fit(X_train, Y_train, callbacks=[WeightsSaver(5)])
Run Code Online (Sandbox Code Playgroud)