Pytorch為什麼使用分組卷積時訓練速度變慢了?

時間 2021-05-12 05:25:01

1樓:Angzz

可以參考ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design

裡面對現在depth-wise, group conv等op的bottleneck從訪存角度做了很詳細的分析。

2樓:

準確的說,是group conv和cudnn優化的3x3 conv比速度變慢了,而且是group越多,速度越慢的明顯。原因應該是group變多,運算可並行性降低。這個相關分析shufflenet v2裡有提到過。

所以框架一般會針對depthwise conv作特別的優化。看這個issue https://

,pytorch的FP16 depthwise conv是要比一般卷積快的,目前貌似是FP32還沒有優化好。

3樓:百思視界

參數量會減小

常規卷積做法:如果輸入feature map尺寸為 ,卷積核有個,輸出feature map與卷積核的數量相同也是 ,每個卷積核的尺寸為 , 個卷積核的總參數量為

Group Convolution則是對輸入feature map進行分組,然後每組分別卷積。假設輸入feature map的尺寸仍為 ,輸出feature map的數量為個,如果設定要分成個groups,則每組的輸入feature map數量為 /G,每組的輸出feature map數量為 / ,每個卷積核的尺寸為 / ,卷積核的總數仍為個,每組的卷積核數量為 / ,卷積核只與其同組的輸入map進行卷積,卷積核的總參數量為 / ,可見,總參數量減少為原來的1/ 。

速度上主要是用for迴圈實現,並不是並行,所以會變慢。現在有了更新:

為什麼Pytorch不能像sklearn一樣不用定義函式,都封裝好,直接調庫,幾行就搞定?

Lanking 有,但是不屬於框架的範疇。比如說numpy就沒有多少定義的大函式.如果你要實現乙個演算法也都得手寫.sklearn就是呼叫numpy和scipy的功能。同理,pytorch在深度學習地位和numpy類似,但是深度學習應用不會直接包在框架裡,對比之下,huggingface和torch...

軍書十二卷,捲捲有爺名 ,為什麼每卷都有木蘭她爹的名字?

yc znone 我以為是 當時烽火四起,急需徵召。木蘭他爹打仗很厲害,非常有名。各條戰線都想調他到自己這來,因此每卷軍書都要求這個人。從後面的句子來看,木蘭當的也不是普通的炮灰角色。 已永封去豆瓣 說明她家領地多且分散,東一塊西一塊,以至於 基於不同地域的 每一捲兵書上都有她家必須承擔的兵役。這麼...

健身時為什麼要分組數?

狼圖騰 不需要分組,分組是因為數量多一次做不了那麼多,只能分開完成。例如要做100個俯臥撐,你能一次完成就不用分組做了。但一般一次是做不動這麼多的,只能分開做,合計成100個了。 CHARLIE 組數是現象,背後的本質是 6 12rm重量範圍內的 容量。而有的正式組只有一組的極端情況,是高階階段和運...