depthwise模型訓練不容易收斂

 

    爲了做模型壓縮,常見方法將正常卷積換成seperable 卷積(正常卷積和可分離卷積具體見下圖)

              (1)正常卷積                          (2)depthwise 卷積                                  (3)pointwise 卷積

正常卷積卷積的大小: kernel_size_w * kernel_size_h * input_channel * output_channel 

seperable 卷積大小:kernel_size_w * kernel_size_h * input_channel + input_channel * output_channel

 

moblieNet v2中解釋:經過激活層的tensor HxWxD 興趣流形,可能只分布在激活層的一個低維子空間,利用這一點使用1x1卷積將tensor降維,但由於relu的存在,將爲損失較多信息。 

上圖中,利用MxN的矩陣B將張量(2D,即N=2)變換到M維的空間中,通過ReLUctant後(y=ReLU(Bx)),再用此矩陣之逆恢復原來的張量。(1x1xNxM 的卷積作用後再用relu, 如果輸出的dim 比較少的時候,信息丟失嚴重)。在較低維度的張量表示(興趣流形)上進行ReLU等線性變換會有很大的信息損耗。 因此在moblieNet v2 中在做depthwise 卷積的時候通過1x1的卷積將channels 數據增多,來方式relu 對信息的損耗。(嚴重的情況,relu 將損失所有的信息,無論輸入是什麼輸出都爲一樣的結果)。

因此在訓練depthwise 結構的模型時容易出現不收斂的情況,可以通過向moblienet v2中一樣將要做relu 層的channels 增多。 或者加上skip-connection 將輸入特徵和經過relu 的數據結合在一起,會減輕relu 造成的不收斂情況。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章