【发布时间】:2017-12-06 00:39:58
【问题描述】:
https://www.tensorflow.org/versions/r0.12/api_docs/python/framework/tensor_types 中列出的 tf.float16 和 tf.bfloat16 有什么区别?
另外,“量化整数”是什么意思?
【问题讨论】:
标签: tensorflow
https://www.tensorflow.org/versions/r0.12/api_docs/python/framework/tensor_types 中列出的 tf.float16 和 tf.bfloat16 有什么区别?
另外,“量化整数”是什么意思?
【问题讨论】:
标签: tensorflow
bfloat16 是一种特定于 TensorFlow 的格式,不同于 IEEE 自己的 float16,因此有了新名称。 b 代表(谷歌)大脑。
基本上,bfloat16 是一个float32,被截断为前 16 位。因此它具有相同的 8 位用于指数,而只有 7 位用于尾数。因此,它很容易从float32 转换为float32,并且因为它与float32 具有基本相同的范围,它最大限度地降低了NaNs 或从float32 切换时梯度爆炸/消失的风险。
来自sources:
// 浮点数的紧凑 16 位编码。此表示使用 // 1 位用于符号,8 位用于指数,7 位用于尾数。它 // 假设浮点数是 IEEE 754 格式,所以表示只是 // 单精度浮点数的 16-31 位。 // // 注意:IEEE 浮点标准定义了一个 float16 格式 // 不同于这种格式(它有更少的指数位和更多 //尾数位)。我们在这里不使用该格式,因为转换 // 到/从 32 位浮点数对于该格式来说更复杂,并且 // 这种格式的转换非常简单。对于量化整数,它们旨在替换训练网络中的浮点以加快处理速度。基本上,它们是一种实数的定点编码,尽管选择了一个操作范围来表示在网络的任何给定点上观察到的分布。
更多关于量化的信息here。
【讨论】: