I just created a model that does a binary classification and has a dense layer of 1 unit at the end. I used Sigmoid activation. However, I get this error now when I wanna convert it to CoreML.

I tried to change the number of units to 2 and activation to softmax but still didn't work.

import coremltools as ct
#1. define input size
image_input = ct.ImageType(scale=1/255)

#2. give classifier
classifier_config = coremltools.ClassifierConfig(class_labels=[0, 1]) #ERROR here

#3. convert the model
coreml_model = coremltools.convert("mask_detection_model_surgical_mask.h5",
                                   inputs=[image_input], classifier_config=classifier_config)

#4. load and resize an example image
example_image = Image.open("Unknown3.jpg").resize((256, 256))

# Make a prediction using Core ML
out_dict = coreml_model.predict({mymodel.input_names[0]: example_image})

print(out_dict["classLabels"])
# save to disk
#coreml_model.save("FINALLY.mlmodel")

The error I get

1

There are 1 best solutions below

0
On

I found the answer to my question.

Use Softmax activation and 2 Dense units as the final layer with either loss='binary_crossentropy' or `loss='categorical_crossentropy'

Good luck to hundreds of people who posted a similar question but received no answer.