2017-05-05 89 views
1

我是Python和Keras的新手,我成功構建了一個神經網絡,可以在每個Epoch後節省體重文件。但是,我希望獲得更多的粒度(我將時間序列中的圖層重量分佈可視化),並希望在每批N次後保存權重,而不是每個時期。Python/Keras - 在每N批次後保存模型重量

有沒有人有任何建議?

回答

4

您可以創建自己的回調(https://keras.io/callbacks/)。類似:

from keras.callbacks import Callback 

class WeightsSaver(Callback): 
    def __init__(self, model, N): 
     self.model = model 
     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,而不是在每個曆元提供,因爲稍後可重新啓動在0 batch參數。

然後將其添加到您的健康呼叫。例如,爲了每5批次節省重量:

model.fit(X_train, Y_train, callbacks=[WeightsSaver(model, 5)])