【问题标题】:What is tf.bfloat16 "truncated 16-bit floating point"?什么是 tf.bfloat16“截断的 16 位浮点”?
【发布时间】:2017-12-06 00:39:58
【问题描述】:

https://www.tensorflow.org/versions/r0.12/api_docs/python/framework/tensor_types 中列出的 tf.float16 和 tf.bfloat16 有什么区别?

另外,“量化整数”是什么意思?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    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

    【讨论】:

    • 谢谢。在源代码中它还说:“由于现有的 IEEE float16 类型,我们没有将我们的表示命名为“float16”,而只是使用“uint16”。为什么是 uint16?这可能是文档中的错误,它的意思是 bfloat16?
    • 我认为他们只是指how bfloat16 is represented internally
    • 您关于量化的第二个链接已损坏。
    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2017-05-08
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多