第14集讲解混合精度训练。混合精度训练是一种针对单精度的训练方法,与之相对的是半精度,单精度是指32位精度,而半精度则是16位精度,因为16是32的一半,所以称为半精度,精度是用来表示小数的精确程度的,精度越高,能够表示的小数就越小,混合精度运算是指单精度和半精度一起进行运算。首先需要解释一下为什么采用混合精度运算,因为32位精度需要更多的存储空间,而半精度的存储空间只有16位,因此采用混合精度运算可以节约显存。
在进行后向传播时,采用32位全精度是为了进行梯度下降计算。后向传播采用32位高精度的原因是因为梯度下降的数学原理是通过等式求偏导,这个值越小越精确。偏导是用来表示函数曲线的斜率,而斜率的微小变化都会引起很大的反馈,因此精度越高越好,这样更容易找到最优值。另一方面,采用32位高精度还可以避免梯度消失或梯度爆炸。如果您对梯度感兴趣,可以留言,下次我会为您科普。
1、什么是单、双 精度浮点数浮点表示小数点位置不确定,如123.43,6557.521。在C语言中,数据类型一般是single 精度比如int,数据范围是2的31次方。但double 精度 type integer如longint的数据范围是2的63次方。所以double 精度和single 精度的主要区别在于数据范围。一般来说,double 精度。比如身高表示的小数点后的位数,小到0.01 double 精度,大到0.0001以上。实际的精度不是这样,具体多少我记不清了。
2、什么是单 精度/双 精度数?区别如下:1。单精度和双精度的字节数不同。前者占4个字节;后者占用8个字节。2.单精度和双精度的位数不同。前者为8位;后者为16位。3.single 精度和double 精度表示的数字范围不同。前者的数值范围在3.40E 38到 3.40E 38之间;后者从1.79E 308到 1.79E 308不等。4.单精度和双精度的处理速度不同。前者更快。
3、什么是单 精度什么是双 精度,怎么用这两个single 精度和double 精度指存储小数的精度。不同的语言对单精度和双精度使用不同的存储空间,如何选择:可以用你的语言搜索单精度和双精度变量的表达式范围。如果你要存储的目标值不能用single 精度(即小数点后有很多位)存储,就要用double,这和存储大数的原理是一样的。比如C语言中的unsignedchar可以存储0255,unsignedint可以存储065535,如果要存储的数不会超过255,可以选择unsignedchar类型,如果不超过65535,可以选择unsignedint类型。