在Keras中保存每个时期的训练历史可以通过多种方式实现,以下是几种常见的方法:
ModelCheckpoint
和 History
ModelCheckpoint
回调函数可以在每个训练时期后保存模型的权重,而 History
对象则可以记录训练过程中的各种指标。
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import ModelCheckpoint, History
# 创建一个简单的模型
model = Sequential()
model.add(Dense(10, input_dim=8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 创建回调函数
checkpoint = ModelCheckpoint('model-{epoch:02d}-{val_loss:.2f}.h5', monitor='val_loss', save_best_only=True, mode='min')
history = History()
# 训练模型并保存历史
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=32, callbacks=[checkpoint, history])
# 访问训练历史
print(history.history)
你也可以手动记录每个时期的训练历史,将指标保存到一个字典中。
from keras.models import Sequential
from keras.layers import Dense
# 创建一个简单的模型
model = Sequential()
model.add(Dense(10, input_dim=8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 初始化历史字典
history = {}
# 自定义回调函数
class CustomCallback(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs=None):
for k, v in logs.items():
if k not in history:
history[k] = []
history[k].append(v)
# 训练模型并保存历史
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=32, callbacks=[CustomCallback()])
# 访问训练历史
print(history)
TensorBoard
回调函数TensorBoard
回调函数可以将训练历史记录到TensorBoard中,便于可视化。
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import TensorBoard
# 创建一个简单的模型
model = Sequential()
model.add(Dense(10, input_dim=8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 创建TensorBoard回调函数
tensorboard = TensorBoard(log_dir='./logs', histogram_freq=1, write_graph=True, write_images=True)
# 训练模型并保存历史
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=32, callbacks=[tensorboard])
通过以上方法,你可以在Keras中方便地保存每个时期的训练历史,并应用于模型训练监控、模型选择和超参数调优等场景。
领取专属 10元无门槛券
手把手带您无忧上云