Python 训练时的位精度如何影响DNN';s精度-支持量化类型推断的库

Python 训练时的位精度如何影响DNN';s精度-支持量化类型推断的库,python,deep-learning,Python,Deep Learning,我想检查位精度如何影响DNN的精度。你知道任何C/C++/Python库吗 这不需要大量的返工来支持量化类型的推理吗?例如,我想将所有操作数(权重、激活、错误和梯度)设置为8/16/32位精度,并在测试后检查每个精度的精度。在PyTorch(Python)中,您可以设置张量的数据类型,例如: torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]), dtype=torch.HalfTensor) # 16 bit FP 它支持大多数数据类型,请参阅文档 请

我想检查位精度如何影响DNN的精度。你知道任何C/C++/Python库吗 这不需要大量的返工来支持量化类型的推理吗?例如,我想将所有操作数(权重、激活、错误和梯度)设置为8/16/32位精度,并在测试后检查每个精度的精度。

在PyTorch(Python)中,您可以设置张量的数据类型,例如:

torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]), dtype=torch.HalfTensor)  # 16 bit FP
它支持大多数数据类型,请参阅文档 请注意,并非所有GPU都支持所有数据类型,因此您可能应该坚持CPU执行

编辑:


要投射层:
nn.Linear(10,10).double()
或设置默认数据类型
torch.set\u default\u dtype()

因此,如果输入到我的模型,是带有
dtype=torch.float16的张量,PyTorch确保权重、激活、错误和梯度都是与输入具有相同数据类型的张量?编辑答案,您必须显式地强制转换层,或者手动设置层的
参数
张量(
nn.Module
)。梯度和一切,然后应遵循由于自动签名。很好的一点是,您可以在使用标准python
type
执行时手动检查所有内容。这是PyTorch的优点之一。