Tensorflow qint8、quint8、qint32、qint16 和 quint16 数据类型是什么?
What are the Tensorflow qint8, quint8, qint32, qint16, and quint16 datatypes?
我正在查看 Tensorflow tf.nn.quantized_conv2d 函数,我想知道 qint8 等数据类型到底是什么,特别是如果它们是用于 [= tf.contrib.quantize 中的 14=] 或实际上使用 8 位(对于 qint8)存储在内存中。
我知道它们在 tf.dtypes.DType 中有定义,但没有关于它们实际是什么的任何信息。
这些是函数 output Tensor
的数据类型,tf.quantization.quantize()
。这对应于函数的参数 T
。
下面提到的是底层代码,converts/quantizes一个从一种数据类型(例如float32
)到另一种数据类型(tf.qint8, tf.quint8, tf.qint32, tf.qint16, tf.quint16
)的张量。
out[i] = (in[i] - min_range) * range(T) / (max_range - min_range)
if T == qint8: out[i] -= (range(T) + 1) / 2.0
然后,它们可以传递给 tf.nn.quantized_conv2d
等函数,其输入是量化张量,如上文所述。
TLDR,简而言之,它们在内存中存储了 8 位(对于 qint8
)。
您可以在以下链接中找到有关此主题的更多信息:
https://www.tensorflow.org/api_docs/python/tf/quantization/quantize
https://www.tensorflow.org/api_docs/python/tf/nn/quantized_conv2d
https://www.tensorflow.org/lite/performance/post_training_quantization
如果你觉得这个回答有用,请采纳这个回答and/or 投上一票吧。谢谢。
我正在查看 Tensorflow tf.nn.quantized_conv2d 函数,我想知道 qint8 等数据类型到底是什么,特别是如果它们是用于 [= tf.contrib.quantize 中的 14=] 或实际上使用 8 位(对于 qint8)存储在内存中。
我知道它们在 tf.dtypes.DType 中有定义,但没有关于它们实际是什么的任何信息。
这些是函数 output Tensor
的数据类型,tf.quantization.quantize()
。这对应于函数的参数 T
。
下面提到的是底层代码,converts/quantizes一个从一种数据类型(例如float32
)到另一种数据类型(tf.qint8, tf.quint8, tf.qint32, tf.qint16, tf.quint16
)的张量。
out[i] = (in[i] - min_range) * range(T) / (max_range - min_range)
if T == qint8: out[i] -= (range(T) + 1) / 2.0
然后,它们可以传递给 tf.nn.quantized_conv2d
等函数,其输入是量化张量,如上文所述。
TLDR,简而言之,它们在内存中存储了 8 位(对于 qint8
)。
您可以在以下链接中找到有关此主题的更多信息:
https://www.tensorflow.org/api_docs/python/tf/quantization/quantize
https://www.tensorflow.org/api_docs/python/tf/nn/quantized_conv2d
https://www.tensorflow.org/lite/performance/post_training_quantization
如果你觉得这个回答有用,请采纳这个回答and/or 投上一票吧。谢谢。