调用efficientnet_history.save报错:'History'无'save'属性,如何正确保存模型?
问题原因
你调用efficientnet_history.save()报错,是因为model.fit()返回的efficientnet_history是History对象——它只负责记录训练过程中的损失、精度等指标数据,根本没有save方法。要保存的是你定义的模型实例efficientnet_model,不是训练历史。
正确保存模型的方法
1. 直接保存完整H5模型
用模型本身的save()方法,一次性保存模型结构、权重和优化器状态:
efficientnet_model.save("signlen_efficientnet_model.h5")
2. 保存为TensorFlow推荐的SavedModel格式
这种格式兼容性更强,适合跨平台部署,执行后会生成一个包含模型文件的文件夹:
efficientnet_model.save("signlen_efficientnet_model")
3. 用你已有的训练回调加载模型
你训练时已经加了modelCheckpoint回调,它已经在每轮训练后保存了ckpt格式的模型。直接加载就行:
from tensorflow.keras.models import load_model loaded_model = load_model("training_1/cp.ckpt")
加载模型示例
不管用哪种格式保存,加载都可以用load_model函数:
# 加载H5模型 loaded_h5_model = load_model("signlen_efficientnet_model.h5") # 加载SavedModel模型 loaded_saved_model = load_model("signlen_efficientnet_model")
内容的提问来源于stack exchange,提问作者Jimmy Wang
相关产品推荐
相关产品推荐

