我正在尝试使用以下代码将h5 keras模型转换为.mlmodel
文件类型:
from keras.models import load_model
import keras
from keras.applications.mobilenet import MobileNet
from keras.layers import DepthwiseConv2D
# convert the model to coreml format
print("[INFO] converting model")
from keras.utils.generic_utils import CustomObjectScope
with CustomObjectScope({'relu6': keras.applications.mobilenet.relu6,'DepthwiseConv2D': keras.applications.mobilenet.DepthwiseConv2D}):
model = load_model('/Users/nikhil.c/aslModel.h5', custom_objects={
'relu6': MobileNet})
coreml_model = coremltools.converters.keras.convert("/Users/nikhil.c /aslModel.h5",
input_names="image",
image_input_names="image",
image_scale=1/255.0,
class_labels= ["hello", "hi", "you"],
is_bgr=True)
# save the model to disk
coremltools.utils.save_spec(coreml_model, 'aslModel.mlmodel')
在使用CustomObjectScope
之前,我最初收到此错误:
ImportError: cannot import name 'relu6'
我通过CustomObjectScope
进行了修复,但是现在出现了错误:
AttributeError: module 'keras.applications.mobilenet' has no attribute 'relu6'.
我通常不会在堆栈溢出中发帖,所以请告诉我是否需要更多信息。
答案 0 :(得分:0)
您拥有的代码适用于较旧的Keras版本,我检查过的最新Keras(2.2.2)已将ReLU和DepthWiseConv2D集成在keras.layers
中,因此您只需要进行以下改进即可使用MobileNet: / p>
import keras
from keras.applications import MobileNet
同一软件包中还包含MobileNetV2
,用于更新版本的MobileNet。