我是 Python 和 Keras 新手,我已经成功构建了一个神经网络,可以在每个 Epoch 后保存权重文件。但是,我想要更大的粒度(我正在可视化时间序列中的层权重分布),并且希望在每 N 个批处理(而不是每个时期)之后保存权重。
有人有什么建议吗?
最佳答案
您可以创建自己的回调 ( 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
我使用 self.batch
而不是提供的 batch
参数,因为后者在每个纪元从 0 处重新启动。
然后将其添加到您的健身通话中。例如,每 5 个批处理保存权重:
model.fit(X_train, Y_train, callbacks=[WeightsSaver(5)])
关于keras - Python/Keras - 每 N 个批处理后保存模型权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43794995/