深度學習(GAN)中concatenate 和 add的區別

在深度學習中,有時候我們會涉及到兩個特徵結合,在使用卷積情況下就涉及feature map的結合。
一般情況下,feature maps的結合有兩種方法,一種是元素對應相加,簡稱add,另一種就是把特徵圖堆到一起來,簡稱concatenate。
以下先詳細說一下怎麼操作。
假設feature map 1 的維度爲B1C1H1W1B_1*C_1*H_1*W_1, 特徵圖feature map 2 的維度爲B2C2H2W2B_2*C_2*H_2*W_2
1)在add情況下,就是兩個四維矩陣的按元素相加,那麼這時候我們需要兩個矩陣維度全部相等。並且相加後矩陣維度不變。
2)在concatenate情況下,我們把兩個矩陣在某個維度疊加起來,這要求在這個連接的維度上可以不同,但是在其他維度上必須相等。疊加後,某個維度會增加,是兩個矩陣上的某個維度相加。比如,我們在Channel這個維度上連接兩個矩陣,那麼新的矩陣維度是B2C2+C1H2W2B_2*(C_2+C_1)*H_2*W_2

在程序實現上,我們可以這樣:
在這裏插入圖片描述
在這裏插入圖片描述
但是,我們注意到,在做add或者concatenate之後,我們通常還會進一步做一些東西。比如ResNet中,我們利用add進行,這樣可以維持梯度的大小,可以提高網絡的深度。
我們需要考慮add和concatenate有什麼不同。

結論:通常來講,add是concatenate的特殊情況,add需要的內存和參數稍小於concatenate。

假設add或者concatenate之後還需要進行卷積操作,或者其他矩陣操作(如線性連接),我們用W表示這個過程。
W[X,Y]=W1X+W1YW[X,Y]=W_1X+W_1Y這裏我們使用中括號表示concatenate,W1,W2W_1,W_2表示把兩個參數分開,W(X+Y)=WX+WYW(X+Y)=WX+WY,假設add和concatenate得到的結果相等,那麼W1,W2W_1,W_2就要相等了。說明add是concatenate的特殊情況。

從另一個角度來看,add導致數據維度下降,信息則有所損失,在後續處理中,這裏相加的部分的權重始終相同。而concatenate允許有不同的參數。

因此,我們可以看到在GAN中,我們經常使用concatenate的方式。

參考網址

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