【问题标题】:Tensorflow Speech Recognition, run sess.run fails with "could not convert string to float"Tensorflow 语音识别,运行 sess.run 失败,“无法将字符串转换为浮点数”
【发布时间】:2018-08-02 13:32:31
【问题描述】:

我已经按照以下说明训练了一个模型: https://www.tensorflow.org/tutorials/sequences/audio_recognition#training

我有一个 ckpt 文件,但无法使用 tensorflow 的官方说明将其冻结并生成 PB。

为了创建 PB 文件,我使用以下转换器转换了 pbtxt: https://github.com/irfansharif/tensorflow/blob/master/converter.py

现在在运行 Tensorflow 官方“label_wav_file”时出现以下错误:

2018-08-02 10:15:12.263821: 我 tensorflow/core/platform/cpu_feature_guard.cc:140] 你的 CPU 支持 此 TensorFlow 二进制文件未编译使用的指令:AVX2 FMA Traceback(最近一次调用最后一次):文件“label_wav.py”,行 134,在 tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) 文件“/usr/local/lib/python3.5/dist-packages/tensorflow/python/platform/app.py” , 第 126 行,运行中 _sys.exit(main(argv)) 文件“label_wav.py”,第 106 行,在 main FLAGS.output_name, FLAGS.how_many_labels) 文件“label_wav.py”,第 100 行,在 label_wav run_graph(wav_data,labels_list,input_name,output_name,how_many_labels)文件“label_wav.py”,第 68 行,在 run_graph 预测,= sess.run(softmax_tensor, {input_layer_name: wav_data}) 文件 "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", 第 900 行,运行中 run_metadata_ptr)文件“/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py”, 第 1104 行,在 _run np_val = np.asarray(subfeed_val, dtype=subfeed_dtype) 文件 "/home/user/.local/lib/python3.5/site-packages/numpy/core/numeric.py", 第 531 行,在数组中 return array(a, dtype, copy=False, order=order) ValueError: could not convert string to float: b'RIFF$}\x00\x00WAVEfmt \x10\x00\x00\x00\x01\x00\x01\x00

我想确定我想用作输入和输出层的层(我怀疑这是问题的根源)

输入层:data/Mul:0 输出层:ArgMax:0

(我选择了以下作为输出层,因为它是在 pbtxt 文件中设置的)

我的图表中存在以下图层:

任何想法什么是正确的层或我做错了什么?

【问题讨论】:

    标签: python tensorflow speech-recognition


    【解决方案1】:

    在您的回溯中:

    ValueError:无法将字符串转换为浮点数:b'RIFF$}\x00\x00WAVEfmt \x10\x00\x00\x00\x01\x00\x01\x00

    您正在尝试向您的网络提供一个读取为字节串的文件,但这是行不通的。您选择作为输入的层需要某种形状的float 矩阵,这不是您要处理的。 您需要研究网络架构以了解数据是如何传入的,以及您需要进行哪些输入预处理才能将数据输入网络

    【讨论】:

    • 目前我正在使用默认值(再次 - 仅使用 TF 内置示例):with open(wav, 'rb') as wav_file: wav_data = wav_file.read()跨度>
    • 确实,“RIFF...”是 Wav 标头的开头。但是,查看训练脚本,您会发现wav_data 在进入您选择作为输入的层之前发生了很多转换。您需要准确复制这些转换
    • 我在想官方的例子可以开箱即用.. :(你能告诉我它在哪里吗?因为我在 train.py itslef,test_label_wav 中看不到任何关于它的东西.py 但是包含以下内容:“contrib_audio.encode_wav(sample_data, 16000)”添加它会给我相同的确切错误消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多