https://www.tensorflow.org/versions/r0.12/api_docs/python/framework/tensor_types中列出的tf.float16和tf.bfloat16有什么区别?
另外,“量化整数”是什么意思?
最佳答案
bfloat16
是特定于 tensorflow 的格式,不同于IEEE自己的float16
,因此是新名称。 b
代表(Google)Brain。
基本上,bfloat16
是被截断为前16位的float32
。因此它具有相同的8位指数,而尾数只有7位。因此,从float32
到float32
的转换非常容易,并且由于它与NaN
的范围基本相同,因此,从float32
切换时,将ojit_code s或爆炸/消失梯度的风险降到最低。
从sources:
//紧凑的16位浮点数编码。此表示使用
//符号为1位,指数为8位,尾数为7位。它
//假定浮点数采用IEEE 754格式,因此表示形式只是
//单精度浮点数的第16-31位。
//
//注意:IEEE浮点标准定义了float16格式,该格式
//与此格式不同(它的指数位数更少,更多
//尾数位)。我们此处不使用该格式,因为转换
//对于这种格式,往返于32位浮点数会更复杂,并且
//此格式的转换非常简单。
对于量化的整数,它们旨在替换受过训练的网络中的浮点以加快处理速度。基本上,它们是实数的定点编码,尽管选择的工作范围是代表在网络的任何给定点处观察到的分布。
有关量化here的更多信息。
关于tensorflow - 什么是tf.bfloat16 "truncated 16-bit floating point"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44873802/