python - Coremltools 转换 CNN + LSTM 问题
问题描述
我已经使用以下结构在 keras 中训练了一个模型。
model = Sequential()
model.add(TimeDistributed(Convolution2D(16, 3, 3, border_mode="same", activation='relu'), input_shape=(None, image_height, image_width, 3)))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2, 2))))
model.add(TimeDistributed(Convolution2D(32, 3, 3, activation='relu')))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2, 2))))
model.add(TimeDistributed(Convolution2D(64, 3, 3, activation='relu')))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2, 2))))
model.add(TimeDistributed(Convolution2D(128, 3, 3, activation='relu')))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2, 2))))
model.add(TimeDistributed(Flatten(), name='out1'))
model.add(LSTM(256, name='lstm'))
model.add(Dense(1, activation='sigmoid', name='out'))
该模型效果很好,但我需要将其转换为 CoreML。当我尝试时,我收到以下错误。
0 : time_distributed_1_input, <keras.engine.topology.InputLayer object at 0x7f05c8711390>
1 : time_distributed_1, <keras.layers.wrappers.TimeDistributed object at 0x7f05c8711450>
Traceback (most recent call last):
File "converter.py", line 92, in <module>
coreml_model = coremltools.converters.keras.convert(loaded_model, input_names=["image"], output_names=["out1"])
File "/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_keras_converter.py", line 752, in convert
custom_conversion_functions=custom_conversion_functions)
File "/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_keras_converter.py", line 550, in convertToSpec
custom_objects=custom_objects)
File "/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_keras2_converter.py", line 311, in _convert
converter_func(builder, layer, input_names, output_names, keras_layer)
File "/usr/local/lib/python2.7/dist-packages/coremltools/converters/keras/_layers2.py", line 284, in convert_convolution
output_blob_shape = list(filter(None, keras_layer.output_shape))
File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 1062, in output_shape
raise AttributeError('The layer has never been called '
AttributeError: The layer has never been called and thus has no defined output shape.
关于如何在 iOS 中实现此功能的任何想法。是否可以使用 coremltools 来解决这个问题?
解决方案
推荐阅读
- c++ - 什么时候调用 glFlush 太频繁了?
- computer-science - 键盘的作用是什么?
- node.js - 我该如何解决nodemon不断显示的这个错误
- javascript - 如何承诺 Cordova File 插件?
- google-apps-script - 单元格引用超出范围 - 但我使用 GetDataRange()
- c++ - 如何在 C++ 中使用客户区的 HTML/CSS UI 制作本机 UI 窗口
- pandas - groupby 后基于另一列中的值的条件总和
- app-store - 通过 API 或接口直接向 JIRA 提交 App Store Connect Tester 反馈
- jquery - 最大输出号码选择器
- java - 无法调试 Spring Boot 应用程序 jar