python - 使用已安装环境将 Keras 模型转换为 coreml 的问题
问题描述
我有一个 Keras 模型,并且正在按照 coreml 文档将其转换为 coreml。这是代码 - -
import coremltools
import tensorflow
from tensorflow import keras
coreml_model = coremltools.converters.keras.convert("basic.keras.h5")
coremltools.utils.save_spec(coreml_model, 'basic_v1.mlmodel')
但是运行它会给我带来很多错误,我认为这些错误与机器上的环境有关。我在一台装有 python 2 的 Mac 上,我安装了 python3 并正在使用它。我还安装了张量流 2(该站点的最新版本)。这是我得到的错误 -
W1227 10:13:28.989016 4604394944 __init__.py:74] TensorFlow version 2.0.0 detected. Last version known to be fully compatible is 1.14.0 .
W1227 10:13:29.083386 4604394944 __init__.py:128] Keras version 2.3.1 detected. Last version known to be fully compatible of Keras is 2.2.4 .
Traceback (most recent call last):
File "convert_to_coreml.py", line 4, in <module>
coreml_model = coremltools.converters.keras.convert("basic.keras.h5")
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 792, in convert
respect_trainable=respect_trainable)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 579, in convertToSpec
respect_trainable=respect_trainable)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/coremltools/converters/keras/_keras2_converter.py", line 317, in _convert
model = _keras.models.load_model(model, custom_objects = custom_objects)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/saving.py", line 492, in load_wrapper
return load_function(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/saving.py", line 584, in load_model
model = _deserialize_model(h5dict, custom_objects, compile)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/saving.py", line 274, in _deserialize_model
model = model_from_config(model_config, custom_objects=custom_objects)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/saving.py", line 627, in model_from_config
return deserialize(config, custom_objects=custom_objects)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/layers/__init__.py", line 168, in deserialize
printable_module_name='layer')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/utils/generic_utils.py", line 147, in deserialize_keras_object
list(custom_objects.items())))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/sequential.py", line 301, in from_config
custom_objects=custom_objects)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/layers/__init__.py", line 168, in deserialize
printable_module_name='layer')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/utils/generic_utils.py", line 149, in deserialize_keras_object
return cls.from_config(config['config'])
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/base_layer.py", line 1179, in from_config
return cls(**config)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/layers/core.py", line 877, in __init__
self.kernel_initializer = initializers.get(kernel_initializer)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/initializers.py", line 515, in get
return deserialize(identifier)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/initializers.py", line 510, in deserialize
printable_module_name='initializer')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/utils/generic_utils.py", line 140, in deserialize_keras_object
': ' + class_name)
ValueError: Unknown initializer: GlorotUniform
我不是 python 人,但最后一行是指向一些 Keras 问题(每个谷歌),但我正在导入 Keras,版本似乎还可以。任何帮助表示赞赏。
解决方案
您正在尝试使用glorot_uniform。文件写入器和读取器使用的库版本.h5
不相同,不兼容。
你执行了
from tensorflow import keras
@lintex 提供了以下建议:
import keras
推荐阅读
- laravel-5 - Laravel 背包:用于多态关系的 CRUD
- google-analytics - '平均。Google Analytics 上的“页面停留时间”为零
- python - Tensorflow 估计器:不同的纪元数给出相同的结果
- xml - 如何按xslt中的属性值对xml文件进行排序?
- java - Selenium chromedriver 无法正确关闭
- docker - Docker 容器中的 Flutter 在 Jenkins 中失败,但在本地失败
- regex - 为什么这不计算字符串末尾的 CRLF?
- python - 扩展部署词汇
- coldfusion - ColdFusion 2016 修改了代码分析器返回的 CFloop 标签的用法
- xamarin - 如何为启动画面做 Xamarin.UITest?