You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TensorFlow与Librosa生成TFRecord时遇类型错误求助

解决TFRecord写入时MFCC的类型错误问题

你遇到的核心问题是MFCC数组转成列表后是嵌套的二维结构,但tf.train.FloatList要求传入的是一维的浮点数序列,而非列表的列表,这才触发了类型错误。

错误原因拆解

你的mfcc是形状为(128,1293)的二维numpy数组,调用mfcc.tolist()后得到的是包含128个子列表的嵌套结构,每个子列表里有1293个浮点数。但tf.train.FloatList(value=...)只接受直接的一维浮点数集合,无法识别嵌套列表里的子列表元素,所以抛出了"expected one of: int, long, float"的错误。

修复方案

只需要把二维数组展平成一维再转成列表即可,同时注意你代码里的拼写小错误:feartures应该是features,这个细节也可能导致后续解析失败。修改后的关键代码片段如下:

example = tf.train.Example(
    features = tf.train.Features(feature={
        "label":tf.train.Feature(int64_list=tf.train.Int64List(value=[index])),
        "mfcc":tf.train.Feature(float_list=tf.train.FloatList(value=mfcc.flatten().tolist()))
    }))

后续读取注意事项

当你后续从TFRecord读取数据时,记得要把展平后的一维数据重新reshape回(128,1293)的原始形状,才能恢复MFCC特征的结构,示例代码如下:

# 假设解析后得到的mfcc_tensor是一维张量
mfcc = tf.reshape(mfcc_tensor, (128, 1293))

内容的提问来源于stack exchange,提问作者tuffy chow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:10:08