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

将Keras的.h5模型转为.mlmodel时遇AttributeError问题求助

解决CoreML转换Keras模型的AttributeError错误

错误原因

你使用的coremltools版本(4.0及以上)已经移除了coremltools.converters.keras模块,统一使用coremltools.convert作为通用转换入口,因此触发AttributeError。

解决方案

方案1:适配新版coremltools(推荐)

直接修改模型转换代码,用coremltools.convert替代旧API,同时优化输入配置:

import coremltools as ct

# 若从本地h5文件加载模型,可使用以下代码
# model = tf.keras.models.load_model('C:\\Users\\user\\Desktop\\work.h5')

# 转换模型,指定输入为图像类型并匹配训练时的归一化规则
coreml_model = ct.convert(
    model,
    inputs=[ct.ImageType(name="image", shape=model.input_shape, scale=1/255)]
)

# 保存转换后的MLModel文件
coreml_model.save("C:\\Users\\user\\Desktop\\handwriting.mlmodel")

关键说明:

  • ct.ImageType明确输入为图像格式,scale=1/255对应训练时的像素归一化操作,CoreML模型可直接接收0-255的原始像素值,无需iOS端额外处理。
  • 使用TensorFlow内置的Keras加载模型,兼容性更稳定。

方案2:降级coremltools到旧版本(不推荐)

若坚持使用旧版API,可安装coremltools 3.x版本:

pip install coremltools==3.3

安装后原有转换代码可正常运行,但旧版本不支持新的TensorFlow/Keras特性,后续维护存在隐患。

额外优化建议

替换单独的Keras包为TensorFlow整合的tensorflow.keras,避免版本兼容问题,修改导入部分:

import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPool2D, Dense, Dropout, Flatten
import coremltools as ct

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:30:28