在训练模型的过程中,可以使用回调函数来保存每个epoch的历史记录。以下是一个使用Keras框架的示例代码:
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import Callback
# 自定义回调函数来保存每个epoch的历史记录
class SaveEpochHistory(Callback):
def __init__(self):
self.epoch_history = [] # 用于保存每个epoch的历史记录
def on_epoch_end(self, epoch, logs=None):
self.epoch_history.append(logs) # 保存每个epoch的历史记录
# 创建模型
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 创建回调函数
save_history = SaveEpochHistory()
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, callbacks=[save_history])
# 打印每个epoch的历史记录
for epoch, history in enumerate(save_history.epoch_history):
print(f"Epoch {epoch+1}: {history}")
在上面的示例中,我们自定义了一个回调函数SaveEpochHistory
,在每个epoch结束时将logs
参数(包含损失和评估指标的字典)保存到epoch_history
列表中。然后,将该回调函数传递给fit
方法的callbacks
参数,以便在训练过程中调用该回调函数。
最后,我们可以通过遍历epoch_history
列表来打印出每个epoch的历史记录。