AttributeError:将Keras转换为Core ML模型时,“模块”对象没有属性“ SeparableConv1D”

时间:2019-06-07 15:11:09

标签: keras mnist coreml

我正在关注tutorial上有关Keras和CoreML的机器学习的知识,当我指出要运行以下代码并将Keras模型转换为CoreML时。我得到:

  

AttributeError:“模块”对象没有属性“ SeparableConv1D”

我应该在哪里更改以解决此问题?

这是我运行的代码:

output_labels = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

coreml_mnist = coremltools.converters.keras.convert(
    'best_model.09-0.03.h5', input_names=['image'], output_names=['output'], 
    class_labels=output_labels, image_input_names='image')

这是我详细介绍的内容:

AttributeError                            Traceback (most recent call last)
<ipython-input-73-8fa50f6bbeb9> in <module>()
     10 coreml_mnist = coremltools.converters.keras.convert(
     11     'best_model.08-0.03.h5', input_names=['image'], output_names=['output'],
---> 12     class_labels=output_labels, image_input_names='image')

/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_keras_converter.pyc in convert(model, input_names, output_names, image_input_names, input_name_shape_dict, is_bgr, red_bias, green_bias, blue_bias, gray_bias, image_scale, class_labels, predicted_feature_name, model_precision, predicted_probabilities_output, add_custom_layers, custom_conversion_functions)
    758                       predicted_probabilities_output,
    759                       add_custom_layers,
--> 760                       custom_conversion_functions=custom_conversion_functions)
    761 
    762     return _MLModel(spec)

/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_keras_converter.pyc in convertToSpec(model, input_names, output_names, image_input_names, input_name_shape_dict, is_bgr, red_bias, green_bias, blue_bias, gray_bias, image_scale, class_labels, predicted_feature_name, model_precision, predicted_probabilities_output, add_custom_layers, custom_conversion_functions, custom_objects)
    554                                            add_custom_layers=add_custom_layers,
    555                                            custom_conversion_functions=custom_conversion_functions,
--> 556                                            custom_objects=custom_objects)
    557     else:
    558         raise RuntimeError(

/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_keras2_converter.pyc in _convert(model, input_names, output_names, image_input_names, input_name_shape_dict, is_bgr, red_bias, green_bias, blue_bias, gray_bias, image_scale, class_labels, predicted_feature_name, predicted_probabilities_output, add_custom_layers, custom_conversion_functions, custom_objects)
    207     # Build network graph to represent Keras model
    208     graph = _topology2.NetGraph(model)
--> 209     graph.build()
    210 
    211     # The graph should be finalized before executing this

/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_topology2.pyc in build(self, is_top_level)
    748             self.insert_1d_permute_layers()
    749             self.insert_permute_for_spatial_bn()
--> 750             self.defuse_activation()
    751             self.remove_internal_input_layers()
    752 

/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_topology2.pyc in defuse_activation(self)
    508                 isinstance(k_layer, _keras.layers.Conv1D) or
    509                 isinstance(k_layer, _keras.layers.SeparableConv2D) or
--> 510                 isinstance(k_layer, _keras.layers.SeparableConv1D) or
    511                 isinstance(k_layer, _keras.layers.Dense)):
    512 

AttributeError: 'module' object has no attribute 'SeparableConv1D'

2 个答案:

答案 0 :(得分:0)

似乎您正在使用keras不支持的coremltools版本,因为SeparableConv1D是在keras 2.0.6之后添加的,因此您应该为此升级keras到最新版本。工作。

答案 1 :(得分:0)

我在this tutorial上遇到了同样的问题,就像其他人提到的keras版本不支持SeparableConv1D一样。

但是,仅更新keras的版本而不更新tensorflow会在jupyter笔记本中引起其他错误。我可以使用keras模块在​​jupyter笔记本电脑中直接安装兼容版本的tensorflowsys。在撰写本文时,keras的最新版本是2.2.4,而tensorflow的一个兼容版本(至少已针对本教程进行了测试)是1.7.0。

您可以运行以下python代码进行安装:

import sys
!{sys.executable} -m pip install tensorflow==1.7.0
!{sys.executable} -m pip install keras==2.2.4