将预训练的 CoreML 模型一分为二

Split a pre-trained CoreML model into two

我这里有一个来自 turicreate 示例的声音分类模型: https://apple.github.io/turicreate/docs/userguide/sound_classifier/

我正在尝试将此模型分成两部分,并使用 coremltools 库将这两部分保存为单独的 CoreML 模型。谁能指导我如何做到这一点?

我能够加载模型,甚至打印出模型的规格。但是不知道从这里去哪里。

import coremltools

mlmodel = coremltools.models.MLModel('./EnvSceneClassification.mlmodel')

# Get spec from the model
spec = mlmodel.get_spec()

输出应该是两个 CoreML 模型,即上面的模型分成两部分。

我不是 100% 确定声音分类器模型是什么样的。如果是管道,您可以将管道中的每个子模型保存为单独的 mlmodel 文件。

如果不是管道,则需要进行一些模型手术。您需要从规范中删除图层(del spec.neuralNetworkClassifier.layers[a:b])。

您还需要更改第一个模型的输入和第二个模型的输出以考虑删除的层。