将torchaudio加载的16位音频从'float32'截断为'float16'安全吗?

2024-10-04 07:32:45 发布

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

我有多个深度/精度为16位的WAV文件torchaudio.info(...)认识到这一点,给了我:

precision = {int} 16

然而,当我使用torchaudio.load(...)时,我得到了结果张量的float32数据类型。 使用名为audio的张量,我知道我可以audio.half()将其截断为16位,从而减少数据集的内存使用。但这是一个可以保持所有可能原始值精度的操作吗?我并没有将数据类型的精度降低到原始音频的精度以下,但可能有一个很好的原因我不知道为什么torchaudio仍然返回float32


Tags: 文件数据内存info精度load音频audio
1条回答
网友
1楼 · 发布于 2024-10-04 07:32:45

我会说它返回为float32,因为这是pytorch的默认数据类型。因此,如果您创建任何具有权重的模型,它们也将是浮动的。因此,如果对输入数据进行转换,则输入将与模型不兼容。(或者它会自动将你的数据转换为32位,以使其与你的模型兼容。不确定pytorch选择哪个,但tensorflow肯定会抛出错误)

如果要创建小模型,请在创建任何模型之前,将默认数据类型设置为float16:https://pytorch.org/docs/stable/generated/torch.set_default_dtype.html

但是请注意,如果将16位整数转换为16位浮点,则失去5位精度,因为您已经诊断出该数字实际上是(但表示为32位浮点)16位浮点。这是因为指数中使用了5位精度,只剩下10位表示数字的小数部分

如果你没有特别的内存限制,我会把它保持在float32

相关问题 更多 >