Skip to content

Latest commit

 

History

History
25 lines (17 loc) · 1.03 KB

model-surgery.md

File metadata and controls

25 lines (17 loc) · 1.03 KB

How to replace unsupported layers

Here is a simple script that lets you replace addBroadcastable layers with plain old add layers.

The broadcastable version was introduced in Core ML 3 and is more powerful, but does not always work on the ANE. In most situations, the old add layer performs the equivalent operation (it also supports broadcasting to some extent) and is compatible with the ANE.

import coremltools

model = coremltools.models.MLModel("YourModel.mlmodel")
spec = model._spec
nn = spec.neuralNetwork

# NOTE: If your model is a classifier, use the following:
# nn = spec.neuralNetworkClassifier

for layer in nn.layers:
    if layer.WhichOneof("layer") == "addBroadcastable":
        layer.add.MergeFromString(b"")

new_model = coremltools.models.MLModel(spec)
new_model.save("YourNewModel.mlmodel")

You may need to make other changes to your model as well. To learn how to edit mlmodel files, check out my e-book Core ML Survival Guide.