我有多个深度/精度为16位的WAV文件torchaudio.info(...)
认识到这一点,给了我:
precision = {int} 16
然而,当我使用torchaudio.load(...)
时,我得到了结果张量的float32
数据类型。
使用名为audio
的张量,我知道我可以audio.half()
将其截断为16位,从而减少数据集的内存使用。但这是一个可以保持所有可能原始值精度的操作吗?我并没有将数据类型的精度降低到原始音频的精度以下,但可能有一个很好的原因我不知道为什么torchaudio
仍然返回float32
Tags:
我会说它返回为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
相关问题 更多 >
编程相关推荐