我正在关注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'
答案 0 :(得分:0)
似乎您正在使用keras
不支持的coremltools
版本,因为SeparableConv1D
是在keras 2.0.6之后添加的,因此您应该为此升级keras到最新版本。工作。
答案 1 :(得分:0)
我在this tutorial上遇到了同样的问题,就像其他人提到的keras
版本不支持SeparableConv1D
一样。
但是,仅更新keras
的版本而不更新tensorflow
会在jupyter笔记本中引起其他错误。我可以使用keras
模块在jupyter笔记本电脑中直接安装兼容版本的tensorflow
和sys
。在撰写本文时,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