ImportError:无法导入名称“ relu6”,AttributeError:模块“ keras.applications.mobilenet”没有属性“ relu6”

时间:2018-10-03 17:29:20

标签: python keras

我正在尝试使用以下代码将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'. 

我通常不会在堆栈溢出中发帖,所以请告诉我是否需要更多信息。

1 个答案:

答案 0 :(得分:0)

您拥有的代码适用于较旧的Keras版本,我检查过的最新Keras(2.2.2)已将ReLU和DepthWiseConv2D集成在keras.layers中,因此您只需要进行以下改进即可使用MobileNet: / p>

import keras
from keras.applications import MobileNet

同一软件包中还包含MobileNetV2,用于更新版本的MobileNet。