Coremltools проблемы с преобразованием модели Tensorflow в Core ML с Keras
Я тренирую маленькую модель, а затем пытаюсь экспортировать ее в core ml, используя
coreml_model = coremltools.converters.keras.convert(model)
Но я получаю ошибку:
AttributeError: модуль 'keras.engine' не имеет атрибута 'topology'
После некоторого поиска в Google кто-то предположил, что топология устарела или что-то в этом роде, и предложил заменить topology
с saving
, Я, вероятно, сделал это неправильно, но я открыл
~/.virtualenvs/tensorflow/lib/python3.6/site-packages/coremltools/converters/keras/_keras_converter.py
и в _KERAS_LAYER_REGISTRY
Я пытался изменить
_keras.engine.topology.InputLayer:_layers2.default_skip,
в
_keras.engine.saving.InputLayer:_layers2.default_skip,
и это дало мне немного другую ошибку:
AttributeError: модуль "keras.engine.saving" не имеет атрибута "InputLayer"
Я чувствую себя здесь как рыба из воды, так как раньше никогда не работал ни с Tensorflow, ни с Core ML. Так что будь нежнее со мной. Вот некоторый код:
batch_size = 20
epochs = 10
test_size = 500
input_dim = 30
# Model Architecture
model = Sequential()
# Convolutional Layer
model.add(Conv1D(filters=10, kernel_size=5, input_shape=(input_dim, 1)))
model.add(Flatten())
# Dense Layer
model.add(Dense(input_dim, activation='relu'))
# Logits Layer
model.add(Dense(2, activation='softmax'))
rmsprop = optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=rmsprop,
loss='binary_crossentropy',
metrics=['accuracy'],
)
model.fit(x=x_train, y=y_train, batch_size=batch_size, epochs=epochs)
accuracy = model.evaluate(x=x_test, y=y_test, batch_size=batch_size)
print("Overall accuracy: {}".format(accuracy[1]))
coreml_model = coremltools.converters.keras.convert(model)
coreml_model.save('my_model.mlmodel')