【问题标题】:Keras layer '<class 'keras.layers.core.Lambda'>' not supported. Converting a keras model .h5 to .mlmodel不支持 Keras 层 '<class 'keras.layers.core.Lambda'>'。将 keras 模型 .h5 转换为 .mlmodel
【发布时间】:2020-02-21 21:50:26
【问题描述】:

我最近从同事那里收到了一个 keras 模型 (facenet_keras.h5)。该模型将输入 160 x 160 x 3 图像并输出 1 x 128 向量。我的工作是将这个给定模型转换为 iOS 项目的 coreML 模型。

我已使用 coremltools 尝试将模型转换为 mlmodel,但我不断收到消息 Keras layer '&lt;class 'keras.layers.core.Lambda'&gt;' not supported.

我已经包含了模型中的所有层。该模型非常重 (91 mb)。

<keras.engine.input_layer.InputLayer at 0x141c4a588>,
 <keras.layers.convolutional.Conv2D at 0x141c4a908>,
 <keras.layers.normalization.BatchNormalization at 0x141c4ab70>,
 <keras.layers.core.Activation at 0x141c4a278>,
 <keras.layers.convolutional.Conv2D at 0x141c4a0f0>,
 <keras.layers.normalization.BatchNormalization at 0x141c4a7f0>,
 <keras.layers.core.Activation at 0x141c4a2e8>,
 <keras.layers.convolutional.Conv2D at 0x149a10a58>,
 <keras.layers.normalization.BatchNormalization at 0x149a10320>,
 <keras.layers.core.Activation at 0x149a106d8>,
 <keras.layers.pooling.MaxPooling2D at 0x149a108d0>,
 <keras.layers.convolutional.Conv2D at 0x141c3ff60>,
 <keras.layers.normalization.BatchNormalization at 0x1544ff198>,
 <keras.layers.core.Activation at 0x1544ff2b0>,
 <keras.layers.convolutional.Conv2D at 0x1544ff2e8>,
 <keras.layers.normalization.BatchNormalization at 0x1544ff470>,
 <keras.layers.core.Activation at 0x1544ff588>,
 <keras.layers.convolutional.Conv2D at 0x1544ff5c0>,
 <keras.layers.normalization.BatchNormalization at 0x1544ff748>,
 <keras.layers.core.Activation at 0x1544ff860>,
 <keras.layers.convolutional.Conv2D at 0x1544ff898>,
 <keras.layers.normalization.BatchNormalization at 0x1544ffa20>,
 <keras.layers.core.Activation at 0x1544ffb38>,
 <keras.layers.convolutional.Conv2D at 0x1544ffb70>,
 <keras.layers.convolutional.Conv2D at 0x1544ffcf8>,
 <keras.layers.normalization.BatchNormalization at 0x1544ffe80>,
 <keras.layers.normalization.BatchNormalization at 0x1544fff98>,
 <keras.layers.core.Activation at 0x149a10630>,
 <keras.layers.core.Activation at 0x1544f6128>,
 <keras.layers.convolutional.Conv2D at 0x1544f6160>,
 <keras.layers.convolutional.Conv2D at 0x1544f62e8>,
 <keras.layers.convolutional.Conv2D at 0x1544f6470>,
 <keras.layers.normalization.BatchNormalization at 0x1544f65f8>,
 <keras.layers.normalization.BatchNormalization at 0x1544f6710>,
 <keras.layers.normalization.BatchNormalization at 0x1544f6828>,
 <keras.layers.core.Activation at 0x1544f6940>,
 <keras.layers.core.Activation at 0x1544f6978>,
 <keras.layers.core.Activation at 0x1544f69b0>,
 <keras.layers.merge.Concatenate at 0x1544f69e8>,
 <keras.layers.convolutional.Conv2D at 0x1544f6a20>,
 <keras.layers.core.Lambda at 0x1544f6ba8>,
 <keras.layers.core.Activation at 0x1544f6be0>,
 <keras.layers.convolutional.Conv2D at 0x1544f6c18>,
 <keras.layers.normalization.BatchNormalization at 0x1544f6c50>,
 <keras.layers.core.Activation at 0x1544f6dd8>,
 <keras.layers.convolutional.Conv2D at 0x1544f6ef0>,
 <keras.layers.convolutional.Conv2D at 0x1545050f0>,
 <keras.layers.normalization.BatchNormalization at 0x154505278>,
 <keras.layers.normalization.BatchNormalization at 0x154505390>,
 <keras.layers.core.Activation at 0x1545054a8>,
 <keras.layers.core.Activation at 0x1545054e0>,
 <keras.layers.convolutional.Conv2D at 0x154505518>,
 <keras.layers.convolutional.Conv2D at 0x1545056a0>,
 <keras.layers.convolutional.Conv2D at 0x154505828>,
 <keras.layers.normalization.BatchNormalization at 0x1545059b0>,
 <keras.layers.normalization.BatchNormalization at 0x154505ac8>,
 <keras.layers.normalization.BatchNormalization at 0x154505be0>,
 <keras.layers.core.Activation at 0x154505cf8>,
 <keras.layers.core.Activation at 0x154505d30>,
 <keras.layers.core.Activation at 0x154505d68>,
 <keras.layers.merge.Concatenate at 0x154505da0>,
 <keras.layers.convolutional.Conv2D at 0x154505dd8>,
 <keras.layers.core.Lambda at 0x154505f60>,
 <keras.layers.core.Activation at 0x154505f98>,
 <keras.layers.convolutional.Conv2D at 0x15450b048>,
 <keras.layers.normalization.BatchNormalization at 0x15450b1d0>,
 <keras.layers.core.Activation at 0x15450b2e8>,
 <keras.layers.convolutional.Conv2D at 0x15450b320>,
 <keras.layers.convolutional.Conv2D at 0x15450b4a8>,
 <keras.layers.normalization.BatchNormalization at 0x15450b630>,
 <keras.layers.normalization.BatchNormalization at 0x15450b748>,
 <keras.layers.core.Activation at 0x15450b860>,
 <keras.layers.core.Activation at 0x15450b898>,
 <keras.layers.convolutional.Conv2D at 0x15450b8d0>,
 <keras.layers.convolutional.Conv2D at 0x15450ba58>,
 <keras.layers.convolutional.Conv2D at 0x15450bbe0>,
 <keras.layers.normalization.BatchNormalization at 0x15450bd68>,
 <keras.layers.normalization.BatchNormalization at 0x15450be80>,
 <keras.layers.normalization.BatchNormalization at 0x15450bf98>,
 <keras.layers.core.Activation at 0x154505fd0>,
 <keras.layers.core.Activation at 0x154513128>,
 <keras.layers.core.Activation at 0x154513160>,
 <keras.layers.merge.Concatenate at 0x154513198>,
 <keras.layers.convolutional.Conv2D at 0x1545131d0>,
 <keras.layers.core.Lambda at 0x154513358>,
 <keras.layers.core.Activation at 0x154513390>,
 <keras.layers.convolutional.Conv2D at 0x1545133c8>,
 <keras.layers.normalization.BatchNormalization at 0x154513400>,
 <keras.layers.core.Activation at 0x154513588>,
 <keras.layers.convolutional.Conv2D at 0x1545136a0>,
 <keras.layers.convolutional.Conv2D at 0x1545136d8>,
 <keras.layers.normalization.BatchNormalization at 0x154513860>,
 <keras.layers.normalization.BatchNormalization at 0x1545139e8>,
 <keras.layers.core.Activation at 0x154513b00>,
 <keras.layers.core.Activation at 0x154513c18>,
 <keras.layers.convolutional.Conv2D at 0x154513c50>,
 <keras.layers.convolutional.Conv2D at 0x154513c88>,
 <keras.layers.convolutional.Conv2D at 0x154513e10>,
 <keras.layers.normalization.BatchNormalization at 0x15451a160>,
 <keras.layers.normalization.BatchNormalization at 0x15451a278>,
 <keras.layers.normalization.BatchNormalization at 0x15451a390>,
 <keras.layers.core.Activation at 0x15451a4a8>,
 <keras.layers.core.Activation at 0x15451a4e0>,
 <keras.layers.core.Activation at 0x15451a518>,
 <keras.layers.merge.Concatenate at 0x15451a550>,
 <keras.layers.convolutional.Conv2D at 0x15451a588>,
 <keras.layers.core.Lambda at 0x15451a710>,
 <keras.layers.core.Activation at 0x15451a748>,
 <keras.layers.convolutional.Conv2D at 0x15451a780>,
 <keras.layers.normalization.BatchNormalization at 0x15451a7b8>,
 <keras.layers.core.Activation at 0x15451a940>,
 <keras.layers.convolutional.Conv2D at 0x15451aa58>,
 <keras.layers.convolutional.Conv2D at 0x15451aa90>,
 <keras.layers.normalization.BatchNormalization at 0x15451ac18>,
 <keras.layers.normalization.BatchNormalization at 0x15451ada0>,
 <keras.layers.core.Activation at 0x15451aeb8>,
 <keras.layers.core.Activation at 0x154521048>,
 <keras.layers.convolutional.Conv2D at 0x154521080>,
 <keras.layers.convolutional.Conv2D at 0x154521208>,
 <keras.layers.convolutional.Conv2D at 0x154521390>,
 <keras.layers.normalization.BatchNormalization at 0x154521518>,
 <keras.layers.normalization.BatchNormalization at 0x154521630>,
 <keras.layers.normalization.BatchNormalization at 0x154521748>,
 <keras.layers.core.Activation at 0x154521860>,
 <keras.layers.core.Activation at 0x154521898>,
 <keras.layers.core.Activation at 0x1545218d0>,
 <keras.layers.merge.Concatenate at 0x154521908>,
 <keras.layers.convolutional.Conv2D at 0x154521940>,
 <keras.layers.core.Lambda at 0x154521ac8>,
 <keras.layers.core.Activation at 0x154521b00>,
 <keras.layers.convolutional.Conv2D at 0x154521b38>,
 <keras.layers.normalization.BatchNormalization at 0x154521b70>,
 <keras.layers.core.Activation at 0x154521cf8>,
 <keras.layers.convolutional.Conv2D at 0x154521e10>,
 <keras.layers.normalization.BatchNormalization at 0x154521e48>,
 <keras.layers.core.Activation at 0x145f2a128>,
 <keras.layers.convolutional.Conv2D at 0x145f2a160>,
 <keras.layers.convolutional.Conv2D at 0x145f2a2e8>,
 <keras.layers.normalization.BatchNormalization at 0x145f2a470>,
 <keras.layers.normalization.BatchNormalization at 0x145f2a588>,
 <keras.layers.core.Activation at 0x145f2a6a0>,
 <keras.layers.core.Activation at 0x145f2a6d8>,
 <keras.layers.pooling.MaxPooling2D at 0x145f2a710>,
 <keras.layers.merge.Concatenate at 0x145f2a7b8>,
 <keras.layers.convolutional.Conv2D at 0x145f2a7f0>,
 <keras.layers.normalization.BatchNormalization at 0x145f2a978>,
 <keras.layers.core.Activation at 0x145f2aa90>,
 <keras.layers.convolutional.Conv2D at 0x145f2aac8>,
 <keras.layers.normalization.BatchNormalization at 0x145f2ac50>,
 <keras.layers.core.Activation at 0x145f2ad68>,
 <keras.layers.convolutional.Conv2D at 0x145f2ada0>,
 <keras.layers.convolutional.Conv2D at 0x145f2af28>,
 <keras.layers.normalization.BatchNormalization at 0x145f590f0>,
 <keras.layers.normalization.BatchNormalization at 0x145f59208>,
 <keras.layers.core.Activation at 0x145f59320>,
 <keras.layers.core.Activation at 0x145f59358>,
 <keras.layers.merge.Concatenate at 0x145f59390>,
 <keras.layers.convolutional.Conv2D at 0x145f593c8>,
 <keras.layers.core.Lambda at 0x145f59550>,
 <keras.layers.core.Activation at 0x145f59588>,
 <keras.layers.convolutional.Conv2D at 0x145f595c0>,
 <keras.layers.normalization.BatchNormalization at 0x145f595f8>,
 <keras.layers.core.Activation at 0x145f59780>,
 <keras.layers.convolutional.Conv2D at 0x145f59898>,
 <keras.layers.normalization.BatchNormalization at 0x145f598d0>,
 <keras.layers.core.Activation at 0x145f59a58>,
 <keras.layers.convolutional.Conv2D at 0x145f59b70>,
 <keras.layers.convolutional.Conv2D at 0x145f59ba8>,
 <keras.layers.normalization.BatchNormalization at 0x145f59d30>,
 <keras.layers.normalization.BatchNormalization at 0x145f59eb8>,
 <keras.layers.core.Activation at 0x145f30128>,
 <keras.layers.core.Activation at 0x145f30160>,
 <keras.layers.merge.Concatenate at 0x145f30198>,
 <keras.layers.convolutional.Conv2D at 0x145f301d0>,
 <keras.layers.core.Lambda at 0x145f30358>,
 <keras.layers.core.Activation at 0x145f30390>,
 <keras.layers.convolutional.Conv2D at 0x145f303c8>,
 <keras.layers.normalization.BatchNormalization at 0x145f30400>,
 <keras.layers.core.Activation at 0x145f30588>,
 <keras.layers.convolutional.Conv2D at 0x145f306a0>,
 <keras.layers.normalization.BatchNormalization at 0x145f306d8>,
 <keras.layers.core.Activation at 0x145f30860>,
 <keras.layers.convolutional.Conv2D at 0x145f30978>,
 <keras.layers.convolutional.Conv2D at 0x145f309b0>,
 <keras.layers.normalization.BatchNormalization at 0x145f30b38>,
 <keras.layers.normalization.BatchNormalization at 0x145f30cc0>,
 <keras.layers.core.Activation at 0x145f30dd8>,
 <keras.layers.core.Activation at 0x145f30ef0>,
 <keras.layers.merge.Concatenate at 0x145f30f28>,
 <keras.layers.convolutional.Conv2D at 0x145f30f60>,
 <keras.layers.core.Lambda at 0x145f2c160>,
 <keras.layers.core.Activation at 0x145f2c198>,
 <keras.layers.convolutional.Conv2D at 0x145f2c1d0>,
 <keras.layers.normalization.BatchNormalization at 0x145f2c208>,
 <keras.layers.core.Activation at 0x145f2c390>,
 <keras.layers.convolutional.Conv2D at 0x145f2c4a8>,
 <keras.layers.normalization.BatchNormalization at 0x145f2c4e0>,
 <keras.layers.core.Activation at 0x145f2c668>,
 <keras.layers.convolutional.Conv2D at 0x145f2c780>,
 <keras.layers.convolutional.Conv2D at 0x145f2c7b8>,
 <keras.layers.normalization.BatchNormalization at 0x145f2c940>,
 <keras.layers.normalization.BatchNormalization at 0x145f2cac8>,
 <keras.layers.core.Activation at 0x145f2cbe0>,
 <keras.layers.core.Activation at 0x145f2ccf8>,
 <keras.layers.merge.Concatenate at 0x145f2cd30>,
 <keras.layers.convolutional.Conv2D at 0x145f2cd68>,
 <keras.layers.core.Lambda at 0x145f2cda0>,
 <keras.layers.core.Activation at 0x145f2cf60>,
 <keras.layers.convolutional.Conv2D at 0x145f2cf98>,
 <keras.layers.normalization.BatchNormalization at 0x145f54198>,
 <keras.layers.core.Activation at 0x145f542b0>,
 <keras.layers.convolutional.Conv2D at 0x145f542e8>,
 <keras.layers.normalization.BatchNormalization at 0x145f54470>,
 <keras.layers.core.Activation at 0x145f54588>,
 <keras.layers.convolutional.Conv2D at 0x145f545c0>,
 <keras.layers.convolutional.Conv2D at 0x145f54748>,
 <keras.layers.normalization.BatchNormalization at 0x145f548d0>,
 <keras.layers.normalization.BatchNormalization at 0x145f549e8>,
 <keras.layers.core.Activation at 0x145f54b00>,
 <keras.layers.core.Activation at 0x145f54b38>,
 <keras.layers.merge.Concatenate at 0x145f54b70>,
 <keras.layers.convolutional.Conv2D at 0x145f54ba8>,
 <keras.layers.core.Lambda at 0x145f54d30>,
 <keras.layers.core.Activation at 0x145f54d68>,
 <keras.layers.convolutional.Conv2D at 0x145f54da0>,
 <keras.layers.normalization.BatchNormalization at 0x145f54dd8>,
 <keras.layers.core.Activation at 0x145f54f60>,
 <keras.layers.convolutional.Conv2D at 0x145f3e0f0>,
 <keras.layers.normalization.BatchNormalization at 0x145f3e278>,
 <keras.layers.core.Activation at 0x145f3e390>,
 <keras.layers.convolutional.Conv2D at 0x145f3e3c8>,
 <keras.layers.convolutional.Conv2D at 0x145f3e550>,
 <keras.layers.normalization.BatchNormalization at 0x145f3e6d8>,
 <keras.layers.normalization.BatchNormalization at 0x145f3e7f0>,
 <keras.layers.core.Activation at 0x145f3e908>,
 <keras.layers.core.Activation at 0x145f3e940>,
 <keras.layers.merge.Concatenate at 0x145f3e978>,
 <keras.layers.convolutional.Conv2D at 0x145f3e9b0>,
 <keras.layers.core.Lambda at 0x145f3eb38>,
 <keras.layers.core.Activation at 0x145f3eb70>,
 <keras.layers.convolutional.Conv2D at 0x145f3eba8>,
 <keras.layers.normalization.BatchNormalization at 0x145f3ebe0>,
 <keras.layers.core.Activation at 0x145f3ed68>,
 <keras.layers.convolutional.Conv2D at 0x145f3ee80>,
 <keras.layers.normalization.BatchNormalization at 0x145f65080>,
 <keras.layers.core.Activation at 0x145f65198>,
 <keras.layers.convolutional.Conv2D at 0x145f651d0>,
 <keras.layers.convolutional.Conv2D at 0x145f65358>,
 <keras.layers.normalization.BatchNormalization at 0x145f654e0>,
 <keras.layers.normalization.BatchNormalization at 0x145f655f8>,
 <keras.layers.core.Activation at 0x145f65710>,
 <keras.layers.core.Activation at 0x145f65748>,
 <keras.layers.merge.Concatenate at 0x145f65780>,
 <keras.layers.convolutional.Conv2D at 0x145f657b8>,
 <keras.layers.core.Lambda at 0x145f65940>,
 <keras.layers.core.Activation at 0x145f65978>,
 <keras.layers.convolutional.Conv2D at 0x145f659b0>,
 <keras.layers.normalization.BatchNormalization at 0x145f659e8>,
 <keras.layers.core.Activation at 0x145f65b70>,
 <keras.layers.convolutional.Conv2D at 0x145f65c88>,
 <keras.layers.normalization.BatchNormalization at 0x145f65cc0>,
 <keras.layers.core.Activation at 0x145f65e48>,
 <keras.layers.convolutional.Conv2D at 0x145f65f60>,
 <keras.layers.convolutional.Conv2D at 0x150376160>,
 <keras.layers.normalization.BatchNormalization at 0x1503762e8>,
 <keras.layers.normalization.BatchNormalization at 0x150376400>,
 <keras.layers.core.Activation at 0x150376518>,
 <keras.layers.core.Activation at 0x150376550>,
 <keras.layers.merge.Concatenate at 0x150376588>,
 <keras.layers.convolutional.Conv2D at 0x1503765c0>,
 <keras.layers.core.Lambda at 0x150376748>,
 <keras.layers.core.Activation at 0x150376780>,
 <keras.layers.convolutional.Conv2D at 0x1503767b8>,
 <keras.layers.normalization.BatchNormalization at 0x1503767f0>,
 <keras.layers.core.Activation at 0x150376978>,
 <keras.layers.convolutional.Conv2D at 0x150376a90>,
 <keras.layers.normalization.BatchNormalization at 0x150376ac8>,
 <keras.layers.core.Activation at 0x150376c50>,
 <keras.layers.convolutional.Conv2D at 0x150376d68>,
 <keras.layers.convolutional.Conv2D at 0x150376da0>,
 <keras.layers.normalization.BatchNormalization at 0x1503810f0>,
 <keras.layers.normalization.BatchNormalization at 0x150381208>,
 <keras.layers.core.Activation at 0x150381320>,
 <keras.layers.core.Activation at 0x150381358>,
 <keras.layers.merge.Concatenate at 0x150381390>,
 <keras.layers.convolutional.Conv2D at 0x1503813c8>,
 <keras.layers.core.Lambda at 0x150381550>,
 <keras.layers.core.Activation at 0x150381588>,
 <keras.layers.convolutional.Conv2D at 0x1503815c0>,
 <keras.layers.normalization.BatchNormalization at 0x1503815f8>,
 <keras.layers.core.Activation at 0x150381780>,
 <keras.layers.convolutional.Conv2D at 0x150381898>,
 <keras.layers.normalization.BatchNormalization at 0x1503818d0>,
 <keras.layers.core.Activation at 0x150381a58>,
 <keras.layers.convolutional.Conv2D at 0x150381b70>,
 <keras.layers.convolutional.Conv2D at 0x150381ba8>,
 <keras.layers.normalization.BatchNormalization at 0x150381d30>,
 <keras.layers.normalization.BatchNormalization at 0x150381eb8>,
 <keras.layers.core.Activation at 0x150358128>,
 <keras.layers.core.Activation at 0x150358160>,
 <keras.layers.merge.Concatenate at 0x150358198>,
 <keras.layers.convolutional.Conv2D at 0x1503581d0>,
 <keras.layers.core.Lambda at 0x150358358>,
 <keras.layers.core.Activation at 0x150358390>,
 <keras.layers.convolutional.Conv2D at 0x1503583c8>,
 <keras.layers.normalization.BatchNormalization at 0x150358400>,
 <keras.layers.core.Activation at 0x150358588>,
 <keras.layers.convolutional.Conv2D at 0x1503586a0>,
 <keras.layers.convolutional.Conv2D at 0x1503586d8>,
 <keras.layers.convolutional.Conv2D at 0x150358860>,
 <keras.layers.normalization.BatchNormalization at 0x1503589e8>,
 <keras.layers.normalization.BatchNormalization at 0x150358b70>,
 <keras.layers.normalization.BatchNormalization at 0x150358c88>,
 <keras.layers.core.Activation at 0x150358da0>,
 <keras.layers.core.Activation at 0x150358eb8>,
 <keras.layers.core.Activation at 0x150358ef0>,
 <keras.layers.convolutional.Conv2D at 0x150358f28>,
 <keras.layers.convolutional.Conv2D at 0x150366128>,
 <keras.layers.convolutional.Conv2D at 0x1503662b0>,
 <keras.layers.normalization.BatchNormalization at 0x150366438>,
 <keras.layers.normalization.BatchNormalization at 0x150366550>,
 <keras.layers.normalization.BatchNormalization at 0x150366668>,
 <keras.layers.core.Activation at 0x150366780>,
 <keras.layers.core.Activation at 0x1503667b8>,
 <keras.layers.core.Activation at 0x1503667f0>,
 <keras.layers.pooling.MaxPooling2D at 0x150366828>,
 <keras.layers.merge.Concatenate at 0x1503668d0>,
 <keras.layers.convolutional.Conv2D at 0x150366908>,
 <keras.layers.normalization.BatchNormalization at 0x150366a90>,
 <keras.layers.core.Activation at 0x150366ba8>,
 <keras.layers.convolutional.Conv2D at 0x150366be0>,
 <keras.layers.normalization.BatchNormalization at 0x150366d68>,
 <keras.layers.core.Activation at 0x150366e80>,
 <keras.layers.convolutional.Conv2D at 0x150366eb8>,
 <keras.layers.convolutional.Conv2D at 0x150385080>,
 <keras.layers.normalization.BatchNormalization at 0x150385208>,
 <keras.layers.normalization.BatchNormalization at 0x150385320>,
 <keras.layers.core.Activation at 0x150385438>,
 <keras.layers.core.Activation at 0x150385470>,
 <keras.layers.merge.Concatenate at 0x1503854a8>,
 <keras.layers.convolutional.Conv2D at 0x1503854e0>,
 <keras.layers.core.Lambda at 0x150385668>,
 <keras.layers.core.Activation at 0x1503856a0>,
 <keras.layers.convolutional.Conv2D at 0x1503856d8>,
 <keras.layers.normalization.BatchNormalization at 0x150385710>,
 <keras.layers.core.Activation at 0x150385898>,
 <keras.layers.convolutional.Conv2D at 0x1503859b0>,
 <keras.layers.normalization.BatchNormalization at 0x1503859e8>,
 <keras.layers.core.Activation at 0x150385b70>,
 <keras.layers.convolutional.Conv2D at 0x150385c88>,
 <keras.layers.convolutional.Conv2D at 0x150385cc0>,
 <keras.layers.normalization.BatchNormalization at 0x150385e48>,
 <keras.layers.normalization.BatchNormalization at 0x15038b128>,
 <keras.layers.core.Activation at 0x15038b240>,
 <keras.layers.core.Activation at 0x15038b278>,
 <keras.layers.merge.Concatenate at 0x15038b2b0>,
 <keras.layers.convolutional.Conv2D at 0x15038b2e8>,
 <keras.layers.core.Lambda at 0x15038b470>,
 <keras.layers.core.Activation at 0x15038b4a8>,
 <keras.layers.convolutional.Conv2D at 0x15038b4e0>,
 <keras.layers.normalization.BatchNormalization at 0x15038b518>,
 <keras.layers.core.Activation at 0x15038b6a0>,
 <keras.layers.convolutional.Conv2D at 0x15038b7b8>,
 <keras.layers.normalization.BatchNormalization at 0x15038b7f0>,
 <keras.layers.core.Activation at 0x15038b978>,
 <keras.layers.convolutional.Conv2D at 0x15038ba90>,
 <keras.layers.convolutional.Conv2D at 0x15038bac8>,
 <keras.layers.normalization.BatchNormalization at 0x15038bc50>,
 <keras.layers.normalization.BatchNormalization at 0x15038bdd8>,
 <keras.layers.core.Activation at 0x15038bef0>,
 <keras.layers.core.Activation at 0x150373080>,
 <keras.layers.merge.Concatenate at 0x1503730b8>,
 <keras.layers.convolutional.Conv2D at 0x1503730f0>,
 <keras.layers.core.Lambda at 0x150373278>,
 <keras.layers.core.Activation at 0x1503732b0>,
 <keras.layers.convolutional.Conv2D at 0x1503732e8>,
 <keras.layers.normalization.BatchNormalization at 0x150373320>,
 <keras.layers.core.Activation at 0x1503734a8>,
 <keras.layers.convolutional.Conv2D at 0x1503735c0>,
 <keras.layers.normalization.BatchNormalization at 0x1503735f8>,
 <keras.layers.core.Activation at 0x150373780>,
 <keras.layers.convolutional.Conv2D at 0x150373898>,
 <keras.layers.convolutional.Conv2D at 0x1503738d0>,
 <keras.layers.normalization.BatchNormalization at 0x150373a58>,
 <keras.layers.normalization.BatchNormalization at 0x150373be0>,
 <keras.layers.core.Activation at 0x150373cf8>,
 <keras.layers.core.Activation at 0x150373e10>,
 <keras.layers.merge.Concatenate at 0x150373e48>,
 <keras.layers.convolutional.Conv2D at 0x150373e80>,
 <keras.layers.core.Lambda at 0x15037f080>,
 <keras.layers.core.Activation at 0x15037f0b8>,
 <keras.layers.convolutional.Conv2D at 0x15037f0f0>,
 <keras.layers.normalization.BatchNormalization at 0x15037f128>,
 <keras.layers.core.Activation at 0x15037f2b0>,
 <keras.layers.convolutional.Conv2D at 0x15037f3c8>,
 <keras.layers.normalization.BatchNormalization at 0x15037f400>,
 <keras.layers.core.Activation at 0x15037f588>,
 <keras.layers.convolutional.Conv2D at 0x15037f6a0>,
 <keras.layers.convolutional.Conv2D at 0x15037f6d8>,
 <keras.layers.normalization.BatchNormalization at 0x15037f860>,
 <keras.layers.normalization.BatchNormalization at 0x15037f9e8>,
 <keras.layers.core.Activation at 0x15037fb00>,
 <keras.layers.core.Activation at 0x15037fc18>,
 <keras.layers.merge.Concatenate at 0x15037fc50>,
 <keras.layers.convolutional.Conv2D at 0x15037fc88>,
 <keras.layers.core.Lambda at 0x15037fcc0>,
 <keras.layers.core.Activation at 0x15037fe80>,
 <keras.layers.convolutional.Conv2D at 0x15037feb8>,
 <keras.layers.normalization.BatchNormalization at 0x141c9e0b8>,
 <keras.layers.core.Activation at 0x141c9e1d0>,
 <keras.layers.convolutional.Conv2D at 0x141c9e208>,
 <keras.layers.normalization.BatchNormalization at 0x141c9e390>,
 <keras.layers.core.Activation at 0x141c9e4a8>,
 <keras.layers.convolutional.Conv2D at 0x141c9e4e0>,
 <keras.layers.convolutional.Conv2D at 0x141c9e668>,
 <keras.layers.normalization.BatchNormalization at 0x141c9e7f0>,
 <keras.layers.normalization.BatchNormalization at 0x141c9e908>,
 <keras.layers.core.Activation at 0x141c9ea20>,
 <keras.layers.core.Activation at 0x141c9ea58>,
 <keras.layers.merge.Concatenate at 0x141c9ea90>,
 <keras.layers.convolutional.Conv2D at 0x141c9eac8>,
 <keras.layers.core.Lambda at 0x141c9ec50>,
 <keras.layers.pooling.GlobalAveragePooling2D at 0x141c9ec88>,
 <keras.layers.core.Dropout at 0x141c9ecc0>,
 <keras.layers.core.Dense at 0x141c9ed30>,
 <keras.layers.normalization.BatchNormalization at 0x141c9ed68>

有没有其他方法可以做到这一点?我自己对 coremltools 还是很陌生,所以任何帮助都将不胜感激。有没有办法我可以使用 add_custom_layers=True 和 custom_conversion_functions={}) 快速实现这个自定义层“keras.core.lambda”?

【问题讨论】:

  • 你解决了这个问题吗?我对 LSTM 层有同样的问题
  • 嗨,显然 Lambda 层和 LSTM 由 coremltools 支持。在我更新到新的操作系统和新的 CoreML 后,它恰好发生了转换。查看github.com/tf-coreml/tf-coreml
  • @AneeshPrabu 您使用的是哪个版本?我正在使用最新的 4.0b3,它仍然给我同样的问题/错误 Lambda >>> ValueError: Keras layer '' not supported.

标签: swift h5py tensorflow2.0 coreml coremltools


【解决方案1】:

有两种方法可以做到这一点:

  1. 使用现有的 Core ML 操作从 lambda 层实现功能。

  2. 为这些 lambda 层创建一个自定义层。

我写了一篇关于 Core ML 中自定义层的博文:https://machinethink.net/blog/coreml-custom-layers/

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 2019-08-04
    • 2021-09-01
    • 2018-07-13
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2021-12-09
    • 2020-09-10
    相关资源
    最近更新 更多