python - 什么是 Tensorflow qint8、quint8、qint32、qint16 和 quint16 数据类型?
问题描述
我正在查看 Tensorflow tf.nn.quantized_conv2d 函数,我想知道 qint8 等数据类型到底是什么,特别是如果它们是 tf.contrib.quantize 中用于“假量化节点”的数据类型,或者是实际上使用 8 位(对于 qint8)存储在内存中。
我知道它们是在 tf.dtypes.DType 中定义的,但是没有关于它们实际是什么的任何信息。
解决方案
这些是output Tensor
函数的数据类型,tf.quantization.quantize()
。这对应于T
函数的参数。
下面提到的是底层代码,它将张量从一种数据类型(例如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,简而言之回答您的问题,它们实际上存储qint8
在内存中的 8 位(对于 )。
您可以在以下链接中找到有关此主题的更多信息:
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
如果您觉得此答案有用,请接受此答案和/或投票。谢谢。
推荐阅读
- vodapay-miniprogram - 有没有办法在整个小应用程序中禁用主页链接?
- sql - 从另一个字符串返回与正则表达式匹配的所有字符串的列表
- angular - 自定义管道Angular中的异步
- latex - Biblatex:网站引用为斜体,删除“nd”时使用标题而不是作者
- tcp - TcpClient sometimes seems not to finish a writing before closing/disposing. Why?
- graph - Merge overlapping paths
- reactjs - Next.js 刷新值而不在道具列表中重新加载页面
- python - Can you get IDs of people that liked your post through Instagram-Graph API?
- intellij-idea - Setting variables from the response in IntelliJ IDEA's HTTP request generator
- c# - Docx4j.NET mail merge labels issue ('next record' ignored)