AttributeError: 'module' object has no attribute ' SeparableConv1D' while converting Keras to Core ML Model
AttributeError: 'module' object has no attribute ' SeparableConv1D' while converting Keras to Core ML Model
我正在关注有关使用 Keras 和 CoreML 进行机器学习的 tutorial,当我谈到 运行 以下代码并将 Keras 模型转换为 CoreML 时。我得到:
AttributeError: 'module' object has no attribute '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
版本不受 coremltools
支持,因为 SeparableConv1D
是在 keras 2.0.6 之后添加的,您应该将 keras 升级到最新版本为了这个工作。
我在使用 this tutorial 时遇到了同样的问题,正如其他人提到的 keras
版本不支持 SeparableConv1D
。
但是,只更新 keras
的版本而不更新 tensorflow
会导致 jupyter notebook 出现其他错误。我能够使用 sys
模块在 jupyter notebook 中直接安装 keras
和 tensorflow
的兼容版本。在撰写本文时,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
我正在关注有关使用 Keras 和 CoreML 进行机器学习的 tutorial,当我谈到 运行 以下代码并将 Keras 模型转换为 CoreML 时。我得到:
AttributeError: 'module' object has no attribute '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
版本不受 coremltools
支持,因为 SeparableConv1D
是在 keras 2.0.6 之后添加的,您应该将 keras 升级到最新版本为了这个工作。
我在使用 this tutorial 时遇到了同样的问题,正如其他人提到的 keras
版本不支持 SeparableConv1D
。
但是,只更新 keras
的版本而不更新 tensorflow
会导致 jupyter notebook 出现其他错误。我能够使用 sys
模块在 jupyter notebook 中直接安装 keras
和 tensorflow
的兼容版本。在撰写本文时,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