I am working on the neural network classifier provided on the coremltools.readme.io in the updatable->neural network section(https://coremltools.readme.io/docs/updatable-neural-network-classifier-on-mnist-dataset).
I am using the same code but I get an error saying that the coremltools.converters.keras.convert does not exist. But this I know can be coreml version issue. Right know I am using coremltools version 6.2. I converted this model to mlmodel with .convert only. It got converted successfully.
But I face an error in the make_updatable function saying the loss layer must be softmax output. Even the coremlt package API reference there I found its because the layer name is softmaxND but it should be softmax.
Now the problem is when I convert the model from Keras sequential model to coreml model. the layer name and type change. And the softmax changes to softmaxND.
Does anyone faced this issue?
if I execute this builder.inspect_layers(last=4)
I get this output
[Id: 32], Name: sequential/dense_1/Softmax (Type: softmaxND)
Updatable: False
Input blobs: ['sequential/dense_1/MatMul']
Output blobs: ['Identity']
[Id: 31], Name: sequential/dense_1/MatMul (Type: batchedMatmul)
Updatable: False
Input blobs: ['sequential/dense/Relu']
Output blobs: ['sequential/dense_1/MatMul']
[Id: 30], Name: sequential/dense/Relu (Type: activation)
Updatable: False
Input blobs: ['sequential/dense/MatMul']
Output blobs: ['sequential/dense/Relu']
In the make_updatable function when I execute
builder.set_categorical_cross_entropy_loss(name='lossLayer', input='Identity')
I get this error
ValueError: Categorical Cross Entropy loss layer input (Identity) must be a softmax layer output.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Getting error while try Neural Network Classifier Updatable code as it is from coremltools.readme.io
def convert_keras_to_mlmodel(keras_url, mlmodel_url):
from keras.models import load_model
keras_model = load_model(keras_url)
from coremltools.converters import keras as keras_converter
class_labels = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
mlmodel = keras_converter.convert(keras_model, input_names=['image'],
output_names=['digitProbabilities'],
class_labels=class_labels,
predicted_feature_name='digit')
mlmodel.save(mlmodel_url)
coreml_model_path = './MNISTDigitClassifier.mlmodel'
convert_keras_to_mlmodel(keras_model_path , coreml_model_path)
Getting Below error:
ImportError Traceback (most recent call last)
Cell In[10], line 19
16 mlmodel.save(mlmodel_url)
18 coreml_model_path = './MNISTDigitClassifier.mlmodel'
---> 19 convert_keras_to_mlmodel(keras_model_path , coreml_model_path)
Cell In[10], line 9, in convert_keras_to_mlmodel(keras_url, mlmodel_url)
6 from keras.models import load_model
7 keras_model = load_model(keras_url)
----> 9 from coremltools.converters import keras as keras_converter
10 class_labels = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
11 mlmodel = keras_converter.convert(keras_model, input_names=['image'],
12 output_names=['digitProbabilities'],
13 class_labels=class_labels,
14 predicted_feature_name='digit')
ImportError: cannot import name 'keras' from 'coremltools.converters' (/Users/anaamrasool/new-tensorflow-env/env/lib/python3.8/site-packages/coremltools/converters/init.py)