【发布时间】:2019-10-23 02:51:22
【问题描述】:
我正在关注tutorial 关于使用 Keras 和 CoreML 进行机器学习的内容,当我开始运行以下代码并将 Keras 模型转换为 CoreML 时。我明白了:
AttributeError: 'module' 对象没有属性 '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'
【问题讨论】:
-
您使用的是哪个 Keras 版本?
-
@MatiasValdenegro keras 版本 2.0.6
-
该教程不使用 SeparableConv1D 层。这些是你自己加的吗?如果不是,则错误消息可能具有误导性。您使用的是哪个版本的 coremltools?
-
@MatthijsHollemans 不,我没有添加任何内容。该问题与示例的 requirements.txt 中使用的 Keras 版本有关。