Преобразование h5 в coreMl (IOS) - PullRequest
2 голосов
/ 23 марта 2020

Я сейчас работаю в сотрудничестве. Моя задача - преобразовать h5-файл, сгенерированный нейронной сетью с тензорным потоком, в coreML. Кроме того, я должен реализовать это в своем проекте Xcode.

Входные данные - это двумерный массив из 21 числа с плавающей запятой:

input = [[0.5, 0.4, ...]]

Выходные данные должны быть числами с плавающей запятой от 0 до 1.

Я много пробовал, но Насколько я знаю, основная проблема заключается в том, что coreML поддерживает только классификацию изображений. Я не нашел никакой подсказки, как преобразовать h5 в coreML с указанным типом ввода / вывода c, как уже упоминалось. Кто-нибудь может помочь? Большое спасибо!

Редактировать

Это мой код. Я запутался, потому что как только я прочитал, мне просто нужно назвать вход и выход вместо того, чтобы определять переменную как MLMultiArray. Я думаю, это моя главная проблема. Но не понял, как определить входные данные как MLMultiArray.

from keras.models import load_model
import coremltools


coreml_model = coremltools.converters.keras.convert('modelv.h5',
input_names=['data'],
output_names=['output'],
                        )
coreml_model.save('PredictionModel.mlmodel')

Когда я запускаю код, я получаю следующее сообщение от компилятора.

runfile('/Path/Neuronal Network')
Traceback (most recent call last):

  File "/Path/ Neuronal Network/Converter.py", line 20, in <module>
    output_names='output',

  File "/path/", line 804, in convert
    use_float_arraytype=use_float_arraytype)


  File "/Path/opt/anaconda3/lib/python3.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 585, in convertToSpec
    use_float_arraytype=use_float_arraytype)



  File "/Path/opt/anaconda3/lib/python3.7/site-packages/coremltools/converters/keras/_keras2_converter.py", line 328, in _convert
    graph.build()

  File "/Path/opt/anaconda3/lib/python3.7/site-packages/coremltools/converters/keras/_topology2.py", line 740, in build
    self.make_input_layers()

  File "/Path/opt/anaconda3/lib/python3.7/site-packages/coremltools/converters/keras/_topology2.py", line 169, in make_input_layers
    if isinstance(kl, InputLayer) and kl.input == ts:

  File "/Path/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 765, in __bool__
    self._disallow_bool_casting()

  File "/Path/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 534, in _disallow_bool_casting
    self._disallow_in_graph_mode("using a `tf.Tensor` as a Python `bool`")

  File "/Path/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 523, in _disallow_in_graph_mode
    " this function with @tf.function.".format(task))

OperatorNotAllowedInGraphError: using a `tf.Tensor` as a Python `bool` is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...