在https://www.tensorflow.org/versions/r0.12/api_docs/python/framework/tensor_types中,tf.float16和tf.bfloat16有什么区别?
此外,“量化整数”是什么意思?
在https://www.tensorflow.org/versions/r0.12/api_docs/python/framework/tensor_types中,tf.float16和tf.bfloat16有什么区别?
此外,“量化整数”是什么意思?
float16
格式不同,因此采用了新名称。其中b代表(谷歌)Brain。
基本上, 是一个截断为前 16 位的 float32
,所以它具有相同的 8 位指数和仅有 7 位的尾数。 因此,从 float32
转换到 或从 转换到 float32
都很容易,并且由于其范围基本与 float32
相同,因此在从 float32
切换时最小化了出现 NaN
或爆炸/消失梯度的风险。
参见这里获取更多信息:
// 浮点数的紧凑 16 位编码。该表示使用 1 位符号、8 位指数和 7 位尾数。 // 假定浮点数是 IEEE 754 格式,因此该表示只是单精度浮点数的位 16-31。 // // 注意:IEEE 浮点标准定义了与此格式不同的 float16 格式(它具有更少的指数位和更多的尾数位)。 // 我们不在这里使用该格式,因为相对于该格式,转换为/从 32 位浮点数更加复杂,并且该格式的转换非常简单。
至于量化整数,它们被设计用来替换在训练网络中使用的浮点数,以加快处理速度。基本上,它们是实数的一种固定点编码,但操作范围是根据网络任意给定点上的观察分布来选择的。
有关量化的更多信息,请参见此处。