编辑
在大多数情况下,使用@Toan Tran在答案中建议的名称格式化就足够了。
但是,如果您需要一些复杂的逻辑,可以使用回调函数,例如
import keras
class CustomSaver(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
if epoch == 2:
self.model.save("model_{}.hd5".format(epoch))
on_epoch_end
在每个epoch结束时被调用;epoch
是一个epoch的数量,后面的参数是日志(您可以在文档中了解其他回调方法)。将逻辑放入此方法中(例如,示例中尽可能简单)。
创建saver对象并将其放入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",)
X = np.random.normal(0, 1, (1000, 10))
y = np.random.randint(0, 2, 1000)
saver = CustomSaver()
model.fit(X, y, callbacks=[saver], epochs=5)
在 bash
中:
!ls
Out:
model_2.hd5
所以,它有效。