mseloss pytorch_PyTorch 卷积与BatchNorm的融合
生活随笔
收集整理的這篇文章主要介紹了
mseloss pytorch_PyTorch 卷积与BatchNorm的融合
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2020-05-27 更新
2. 有用戶爸爸/媽媽(我是講女權(quán)的)在用我的這套代碼的時候出現(xiàn)了各種錯誤,如果還是打算用這套,我將最新版同步到了github上,后面也會不定期同步:
https://github.com/qinjian623/pytorch_toys/blob/master/post_quant/fusion.py?github.com原文:2018-11-11(本文最后一次更新的時間,神tm的日子...)
融合Conv和BatchNorm是個很基本的優(yōu)化提速方法,很多框架應(yīng)該都提供了功能。自己因?yàn)橐粋€Weekend Project的需求,需要在PyTorch的Python里直接這個事情給做了。
這個融合優(yōu)化屬于經(jīng)濟(jì)上凈賺的事情,精度理論上無損(實(shí)際上有損,但是很小,既然都提速了,八成要弄量化,這個精度掉的更夸張),速度有大幅度提升,尤其是BN層接的特別多的情況。
融合原理
卷積的工作:
BN的工作:
帶入的話可以推出來,融合后的新卷積:
新的卷積就直接順路完成BN的工作。
測試結(jié)果:
在我的筆記本上的測試,CPU版本應(yīng)該是同步的吧,否則這個結(jié)果也是不靠譜的,當(dāng)然這個結(jié)果也不是嚴(yán)肅結(jié)果,沒平均,沒熱機(jī)。不過能定性說明問題就OK,單位是秒。
import
總結(jié)
以上是生活随笔為你收集整理的mseloss pytorch_PyTorch 卷积与BatchNorm的融合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python tfidf特征变换_使用s
- 下一篇: 分类学计算机面试什么,史上最全的机器学习