python - Coremltools 使用 Keras 将 Tensorflow 模型转换为 Core ML 的问题
问题描述
我正在训练一个小模型,然后尝试使用将其导出到核心 ml
coreml_model = coremltools.converters.keras.convert(model)
但我收到一个错误:
AttributeError:模块“keras.engine”没有属性“拓扑”
经过一番谷歌搜索后,有人建议不推荐使用拓扑或其他东西,并建议topology
用saving
. 我可能做错了,但我打开了
~/.virtualenvs/tensorflow/lib/python3.6/site-packages/coremltools/converters/keras/_keras_converter.py
在_KERAS_LAYER_REGISTRY
我尝试改变
_keras.engine.topology.InputLayer:_layers2.default_skip,
至
_keras.engine.saving.InputLayer:_layers2.default_skip,
这给了我一个稍微不同的错误:
AttributeError:模块“keras.engine.saving”没有属性“InputLayer”
在这里,我感觉自己就像一条离开水的鱼,因为我以前从未使用过 Tensorflow 或核心 ML。所以对我温柔点。这是一些代码:
batch_size = 20
epochs = 10
test_size = 500
input_dim = 30
# Model Architecture
model = Sequential()
# Convolutional Layer
model.add(Conv1D(filters=10, kernel_size=5, input_shape=(input_dim, 1)))
model.add(Flatten())
# Dense Layer
model.add(Dense(input_dim, activation='relu'))
# Logits Layer
model.add(Dense(2, activation='softmax'))
rmsprop = optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=rmsprop,
loss='binary_crossentropy',
metrics=['accuracy'],
)
model.fit(x=x_train, y=y_train, batch_size=batch_size, epochs=epochs)
accuracy = model.evaluate(x=x_test, y=y_test, batch_size=batch_size)
print("Overall accuracy: {}".format(accuracy[1]))
coreml_model = coremltools.converters.keras.convert(model)
coreml_model.save('my_model.mlmodel')
解决方案
推荐阅读
- javascript - JS 文件在打开后未在模态视图中加载
- python - 从对象数组中获取所有对象的特定属性的数组
- angular - 类型定义中的感叹号
- tensorflow - 如何在我的代码中使用张量核心而不是 cuda 核心?
- java - 在枚举中添加长方法是不好的设计吗?
- javascript - 调用 e.preventDefault() 后提交复选框表单
- html - 当显示设置为内联时,边距顶部不起作用
- javascript - 使用Router和Links在同一个地方渲染所有组件
- ruby - Savon ruby gem 的“dh 键太小”
- sql - 在 FK user_id 上为促销添加 UNIQUE 约束会阻止用户两次声称促销吗?