You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras保存Sequential模型报CustomMaskWarning加载后预测错误如何解决

问题根因
  • 代码缺少import tensorflow as tf导入语句,调用tf.keras.applications.ResNet50时会触发未定义错误,同时影响模型序列化逻辑
  • 定义ResNet50时pooling=max写法错误,应为字符串格式的"max",非法参数会导致序列化时配置异常
  • 使用HDF5(.h5)格式保存包含预训练基础模型的组合模型时,Keras无法完整序列化ResNet50的内部配置,加载时层参数丢失导致预测结果异常
  • 保存时触发的CustomMaskWarning是因为序列化过程无法正确识别基础模型内部掩码层的配置,加载时配置不全进一步导致输出错误
正确保存与加载方案

方案1:使用TensorFlow SavedModel格式(优先推荐)

SavedModel是TensorFlow官方原生支持的模型格式,会完整保存模型的计算图、结构、权重,无需额外处理自定义对象,兼容性最好:

# 保存模型(路径不需要加.h5后缀,会自动生成对应目录)
model.save("/media/TOSHIBA EXT/trained_model/UAV_01_savedmodel")

# 加载模型
model = keras.models.load_model("/media/TOSHIBA EXT/trained_model/UAV_01_savedmodel")

方案2:必须使用H5格式的处理方法

首先修正模型定义的两处错误:

# 首先补全导入
import tensorflow as tf

# 修正ResNet50的pooling参数
base_model = tf.keras.applications.ResNet50(
    include_top=False,
    weights="imagenet",
    input_shape=(1134,1134,3),
    pooling="max",
)

之后可选择两种加载方式:

方式A:加载时传入自定义对象

# 保存模型
model.save("/media/TOSHIBA EXT/trained_model/UAV_01.h5")

# 加载模型,指定custom_objects参数传入ResNet50类
model = keras.models.load_model(
    "/media/TOSHIBA EXT/trained_model/UAV_01.h5",
    custom_objects={"ResNet50": tf.keras.applications.ResNet50}
)

方式B:结构与权重分开保存(最稳妥)

# 保存阶段:分别存储模型结构和权重
model_json = model.to_json()
with open("/media/TOSHIBA EXT/trained_model/model_structure.json", "w") as f:
    f.write(model_json)
model.save_weights("/media/TOSHIBA EXT/trained_model/model_weights.h5")

# 加载阶段:先加载结构再加载权重
from tensorflow.keras.models import model_from_json
with open("/media/TOSHIBA EXT/trained_model/model_structure.json", "r") as f:
    loaded_model_json = f.read()
model = model_from_json(loaded_model_json, custom_objects={"ResNet50": tf.keras.applications.ResNet50})
model.load_weights("/media/TOSHIBA EXT/trained_model/model_weights.h5")

加载完成后可先调用model.summary()核对结构与保存前一致,再用之前测试正常的单张图片做预测,验证输出结果是否匹配。

内容的提问来源于stack exchange,提问作者user123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:09:02