服装网站建设中期目标,怎么查网站的外链,建站价格会差,湖南益阳新增本土确诊0例引言#xff1a;一般神经网络量化有两个目的#xff1a; 为了加速#xff0c;在某些平台上浮点数计算比较耗费时间#xff0c;替换为整形可以加快运算为了部署#xff0c;某些平台上只支持整形运算#xff0c;比如在芯片中 如果是第1个目的#xff0c;则使用常规的量化手… 引言一般神经网络量化有两个目的 为了加速在某些平台上浮点数计算比较耗费时间替换为整形可以加快运算为了部署某些平台上只支持整形运算比如在芯片中 如果是第1个目的则使用常规的量化手段就可以满足将浮点数运算变成整形运算较少的浮点运算 但是如果是第2个目的那就需要对量化手段做一下改变。 如果是初学者大家可以先看我的另一篇博客这里有详细介绍【精选】神经网络量化----吐血总结-CSDN博客量化技术是连接学院派和工程派之间的桥梁效果再好的网络速度不快那么也不会在工业上普及因此量化技术还是很有发展潜力的。_神经网络量化https://blog.csdn.net/weixin_41910772/article/details/109637956 目录 1. 关于量化我们需要了解哪些可以人为设计
1.1 缩放因子
1.2 权重初始化
1.3 损失
1.4 标签的变换
1.5 s设置后的收敛问题 1. 关于量化我们需要了解哪些可以人为设计
1.1 缩放因子 以对称量化举例输入、权重、输出可以表示为 在训练时设置约束可以将他们的关系表示为 其中的f可以为四舍五入、向下取整或者向上取整变换一下或许更加清晰 那么如果你的平台只支持整形的四则运算以及移位操作而是个浮点数那么就需要对做一个巧妙的设计比如在训练时直接将这个比值表示为a*2^b这样就将与浮点数的运算表示为与整形的乘法和移位操作了又或者将s都限制为2^m这样就将与浮点数的运算表示为移位操作了。
1.2 权重初始化 为了配合1.1中的对s做限制初始化是个关键的步骤好的初始化可以快速收敛我个人比较喜欢torch.nn.init.xavier_normal_这个初始化会根据扇入扇出来使得输入输出的方差保持一致这样s1s3不会有太大的变动。
1.3 损失 例如在二分类中通过的做法是最后一层使用sigmoidBCE损失由于sigmoid的存在会导致输入的分布过于分散所以可以将sigmoidBCE替换为MSE。
1.4 标签的变换 为了配合s的设置还需要将标签变换一下使得输出分布尽量沿原点对称且集中比如二分类中标签为0、1那么可以修改为-0.50.5.
1.5 s设置后的收敛问题 可以将溢出的数据的梯度设置为0。
2. 举例说明
接下来我会找一个典型的芯片部署的问题来进行说明