如何将Tensorflow简单音频识别冻结图(.pb)转换为核心ML模型?

2024-09-29 21:56:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试在iphone应用程序中实现Tensorflow's simple audio recognition。经过一些研究后,我发现我需要将Tensorflow的冻结graph.pb文件转换为核心ML模型,然后在iOS应用程序中使用。所以我试着跟随this示例并引用this转换器。但是看起来这个转换器主要是用来转换将图像作为输入。但是我的模型应该能够接受音频.wav文件作为输入。`在

import tfcoreml as tf_converter
tf_converter.convert(tf_model_path = 'my_frozen_graph.pb',
                     mlmodel_path = 'my_model.mlmodel',
                     output_feature_names = ['labels_softmax:0'],
                     class_labels = 'classes.txt'
                     )

当我尝试使用上面的代码将我的图转换为核心ML模型时,我得到以下错误响应。在

^{pr2}$

根据上一条错误消息,我需要输入input wav_data:0的输入形状。因此,我创建了本教程中提到的冻结图形的文本摘要,并查找了wav_data输入形状。{cd3>的输入是^。在

enter image description here

我想知道有没有其他方法可以把这个文件转换成核心ML模型?或者有没有办法直接在iosswift应用程序中使用冻结的graph.pb文件?在

Tensorflow实验性Swift框架的文档也很少。如果你们有什么好的资源,请分享。在

Update 根据控制台日志,我降低了kerastensorflow版本,而且根据Matthijs的回答,我添加了input_name_shape_dict = { "import/wav_data:0" : [1, 16, 44100, 1]现在控制台以不同的方式显示错误

(env3) minimaci73$ python model.py

Loading the TF graph...
Traceback (most recent call last):
  File "model.py", line 7, in <module>
    class_labels = 'conv_labels.txt'
  File "/Users/minimaci73/anaconda3/envs/env3/lib/python3.6/site-packages/tfcoreml/_tf_coreml_converter.py", line 586, in convert
    custom_conversion_functions=custom_conversion_functions)
  File "/Users/minimaci73/anaconda3/envs/env3/lib/python3.6/site-packages/tfcoreml/_tf_coreml_converter.py", line 153, in _convert_pb_to_mlmodel
    tf.import_graph_def(gdef, name='')
  File "/Users/minimaci73/anaconda3/envs/env3/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 316, in new_func
    return func(*args, **kwargs)
  File "/Users/minimaci73/anaconda3/envs/env3/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 541, in import_graph_def
    raise ValueError('No op named %s in defined operations.' % node.op)
ValueError: No op named DecodeWav in defined operations.
(env3) minimaci73$ python model.py

Tags: 文件inpy模型importmodeltfline
1条回答
网友
1楼 · 发布于 2024-09-29 21:56:51

可以为转换器提供输入形状:

input_name_shape_dict={ "import/wav_data:0" : [1, input_height, input_width, channels] })

如果数据是一维的,那么高度和宽度应该是1,通道应该是数据的长度。在

您也可能会遇到其他转换错误,但这是第一步。:—)(tfcoreml需要知道输入形状,这样它就可以用一些假数据运行模型。)

相关问题 更多 >

    热门问题