将h5转换为coreMl(IOS)

将h5转换为coreMl(IOS),ios,tensorflow,h5py,coreml,coremltools,Ios,Tensorflow,H5py,Coreml,Coremltools,我目前在一家合作公司工作。我的任务是将一个由tensorflow神经网络生成的h5文件转换成coreML。此外,我应该将其实现到我的Xcode项目中 输入是一个由21个浮点数组成的二维数组: input = [[0.5, 0.4, ...]] 输出应该是介于0和1之间的浮点 我已经尝试了很多,但据我所知,主要的问题是coreML只支持图片的分类。我没有找到任何线索,如何将h5转换为具有上述特定输入和输出类型的coreML。有人能帮忙吗? 非常感谢 编辑 这是我的密码。我很困惑,因为一旦我读到,

我目前在一家合作公司工作。我的任务是将一个由tensorflow神经网络生成的h5文件转换成coreML。此外,我应该将其实现到我的Xcode项目中

输入是一个由21个浮点数组成的二维数组:

input = [[0.5, 0.4, ...]]
输出应该是介于0和1之间的浮点

我已经尝试了很多,但据我所知,主要的问题是coreML只支持图片的分类。我没有找到任何线索,如何将h5转换为具有上述特定输入和输出类型的coreML。有人能帮忙吗? 非常感谢

编辑

这是我的密码。我很困惑,因为一旦我读到,我只需要命名输入和输出,而不是将variabel定义为MLMultiArray。我想这是我的主要问题。但是没有理解如何将输入定义为MLMultiArray

从keras.models导入负载模型
导入coremltools
coreml_model=coremltools.converts.keras.convert('modelv.h5',
输入_name=['data'],
输出名称=['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.

runfile(“/Path/Neuronal Network”)
回溯(最近一次呼叫最后一次):
文件“/Path/Neuronal Network/Converter.py”,第20行,在
输出\u name='output',
转换文件“/path/”,第804行
使用\u浮点\u数组类型=使用\u浮点\u数组类型)
convertToSpec中的文件“/Path/opt/anaconda3/lib/python3.7/site packages/coremltools/converts/keras/_keras_converter.py”,第585行
使用\u浮点\u数组类型=使用\u浮点\u数组类型)
文件“/Path/opt/anaconda3/lib/python3.7/site packages/coremltools/converters/keras/\u keras2\u converter.py”,第328行,in\u convert
graph.build()
文件“/Path/opt/anaconda3/lib/python3.7/site packages/coremltools/converts/keras/_topology2.py”,第740行,内部版本
self.make_input_layers()
文件“/Path/opt/anaconda3/lib/python3.7/site packages/coremltools/converts/keras/_topology2.py”,第169行,在make_input_层中
如果isinstance(kl,InputLayer)和kl.input==ts:
文件“/Path/opt/anaconda3/lib/python3.7/site packages/tensorflow_core/python/framework/ops.py”,第765行,在__
self.\u不允许\u bool\u铸造()
文件“/Path/opt/anaconda3/lib/python3.7/site packages/tensorflow\u core/python/framework/ops.py”,第534行,在“不允许”bool\u casting中
self.\u不允许使用图形模式(“使用`tf.Tensor`作为Python`bool`”)
文件“/Path/opt/anaconda3/lib/python3.7/site packages/tensorflow\u core/python/framework/ops.py”,第523行,处于“禁止”图形模式
“此函数带有@tf.function.”.format(任务))
OperatorNotAllowedInGraphError:在图形执行中不允许将'tf.Tensor'用作Python'bool'。使用渴望执行或用@tf.function修饰此函数。

使用
h5py
h5
数据集作为
numpy
数组加载。
h5py
的文档相对简单,尤其是当您正在读取现有文件时。但是您需要了解
coreML
etc如何从
numpy
数组中工作(不要略读
numpy
读数)。您也可以将浮点数组与coreML一起使用。这称为
MLMultiArray
,其工作方式与NumPy数组相同(但不具有所有NumPy函数)。你能用实际问题和/或错误信息更新你的问题吗?谢谢你指出。我完成了这个问题:正如我所描述的,我的主要问题是我无法将输入和输出定义为MLMultiArray@Matthijshollemans从您的问题来看,问题是您实际上无法将模型转换为核心ML。看起来这个模型是用TF2.x训练的。我自己没有试过,但我认为你不能使用Keras转换器,你必须使用TensorFlow转换器。你试过在TensorFlow 2.0中进行这种转换吗?默认情况下,它启用了“急切执行”。