您当前的位置: 首页 > 

FPGA硅农

暂无认证

  • 2浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

INT8量化感知训练原理分析

FPGA硅农 发布时间:2020-09-23 23:43:28 ,浏览量:2

在进行int8量化感知训练时,权重和特征是这样传递的,浮点型的特征 A r l − 1 经 过 量 化 后 变 成 i n t 8 比 特 的 A q l − 1 , 然 后 再 反 量 化 为 A r ′ l − 1 , W r l 也 是 同 样 , 量 化 为 W q l , 再 反 量 化 为 W r ′ l , 于 是 , W r ′ l 和 A r ′ l − 1 这 两 个 浮 点 数 进 行 卷 积 运 算 , 加 上 偏 置 后 结 果 为 浮 点 数 A r l , 再 经 过 量 化 , 可 得 A q l , 如 下 图 所 示 A^{l-1}_r经过量化后变成int8比特的A^{l-1}_q,然后再反量化 \\为A^{l-1}_{r'},W^l_r也是同样,量化为W^l_q,再反量化为W^{l}_{r'}, \\于是,W^l_{r'}和A^{l-1}_{r'}这两个浮点数进行卷积运算,加上 \\偏置后结果为浮点数A^{l}_r,再经过量化,可得A^l_q, \\如下图所示 Arl−1​经过量化后变成int8比特的Aql−1​,然后再反量化为Ar′l−1​,Wrl​也是同样,量化为Wql​,再反量化为Wr′l​,于是,Wr′l​和Ar′l−1​这两个浮点数进行卷积运算,加上偏置后结果为浮点数Arl​,再经过量化,可得Aql​,如下图所示 在这里插入图片描述 deq是反量化操作,q则是量化操作。 由于梯度反向传播时对精度要求较高,因此训练时更新的是浮点型的权重,即量化之前的权重,在训练时,卷积运算是浮点型的权重和特征进行计算,如图中的Conv单元,而在训练结束推断时,为了使用int8进行推断,我们将上图中的deq、conv、q单元整体看成一个量化后的卷积运算单元,这样,这个新的卷积运算单元的输入是int8的权重和特征,输出也是int8。 再看是如何计算的 设反量化操作deq为 r=S(q-Z) 则训练时的浮点卷积运算为 r o u t = r i f m a p ∗ r w e i g h t , ∗ 为 卷 积 或 矩 阵 乘 法 运 算 , 带 入 上 式 得 r_{out}=r_{ifmap}*r_{weight}, \\*为卷积或矩阵乘法运算,带入上式得 rout​=rifmap​∗rweight​,∗为卷积或矩阵乘法运算,带入上式得 S o u t ( q o u t − Z o u t ) = S i f m a p ( q i f m a p − Z i f m a p ) ∗ S w e i g h t ( q w e i g h t − Z w e i g h t ) S_{out}(q_{out}-Z_{out})=S_{ifmap}(q_{ifmap}-Z_{ifmap})*S_{weight}(q_{weight}-Z_{weight}) Sout​(qout​−Zout​)=Sifmap​(qifmap​−Zifmap​)∗Sweight​(qweight​−Zweight​) 整理可得 q o u t = M ( q i f m a p − Z i f m a p ) ∗ ( q w e i g h t − Z w e i g h t ) + Z o u t q_{out}=M(q_{ifmap}-Z_{ifmap})*(q_{weight}-Z_{weight})+Z_{out} qout​=M(qifmap​−Zifmap​)∗(qweight​−Zweight​)+Zout​ 其中 M = S i f m a p ∗ S w e i g h t S o u t 是 一 个 浮 点 数 。 M=\dfrac{S_{ifmap}*S_{weight}}{S_{out}}是一个浮点数。 M=Sout​Sifmap​∗Sweight​​是一个浮点数。 总之,经过一番化简整理,可以得到简单的int8数据之间的乘法(当然M需要稍微进行处理) 从上面的式子可以看出,Z应该是整型。 上边的分析中没有设计到激活函数,若使用ReLu激活函数,则如下图 在这里插入图片描述

关注
打赏
1658642721
查看更多评论
立即登录/注册

微信扫码登录

0.0420s