训练Transformer模型后无法保存最优模型,求问题排查
问题分析与解决
核心原因
你创建了ModelCheckpoint回调cp_callback,但没有将它传入model.fit()的callbacks参数列表,当前callbacks里只有display_cb,导致保存最优模型的逻辑根本没被执行。
修复步骤
修改model.fit()的callbacks参数,把cp_callback加入进去:
history = model.fit( ds, validation_data=val_ds, callbacks=[display_cb, cp_callback], # 加入cp_callback initial_epoch=0, epochs=1 )
额外检查点(避免后续问题)
- 确认
val_ds包含有效验证数据:如果验证数据集为空,val_loss无法计算,回调会因为没有监控指标而不触发保存。 - 优化检查点路径格式:建议给
filepath指定具体的文件名模板,比如:
或者带epoch和loss的命名规则:checkpoint_path = '/content/asr-checkpoint/best_model.keras'
这样能更清晰地管理模型文件,避免目录保存可能出现的异常。checkpoint_path = '/content/asr-checkpoint/model-{epoch:02d}-{val_loss:.2f}.keras' - 当前训练仅执行1轮:如果只训练1个epoch,
save_best_only=True只会保存这一轮的模型(因为没有其他轮次对比),如果需要多轮训练找最优,需调整epochs参数。
内容的提问来源于stack exchange,提问作者XO56
相关产品推荐
相关产品推荐

