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