論文閱讀1:addernet(1)
提出了加法網(wǎng)絡(luò)(AdderNets)來交換深度神經(jīng)網(wǎng)絡(luò)中的這些大規(guī)模乘法,特別是卷積神經(jīng)網(wǎng)絡(luò)(CNNs),以獲得更簡易的加法以降低計算成本。
用L1距離代替歐氏距離,使得用減法代替卷積操作
本文主要解析adder2d_function,減法操作。

知識點復(fù)習(xí):
1.torch.nn.functional.unfold()函數(shù),unfold函數(shù)的輸入數(shù)據(jù)是四維,但輸出是三維的。
首先看一下參數(shù)
????def unfold(input, kernel_size, dilation=1, padding=0, stride=1):
? ? """
????? ? input: tensor數(shù)據(jù),四維, Batchsize, channel, height, width
????? ? kernel_size: 核大小,決定輸出tensor的數(shù)目。稍微詳細(xì)講
????? ? dilation: 輸出形式是否有間隔,稍后詳細(xì)講。
????? ? padding:一般是沒有用的必要
????? ? stride: 核的滑動步長。稍后詳細(xì)講
????"""
假設(shè)有一個張量特征圖

在連續(xù)的在分辨率維度(H和W)維度取出特征

假設(shè)輸入數(shù)據(jù)是[N, C, H, W],輸出為[N, C* kH * kW, L],若stride= 1,padding = 0,則輸出中的L為

一般情況下L計算公式為 (ㄒoㄒ)

另外dilation參數(shù)的含義為選擇的像素間隔
dilation = 0

dilation = 1

2.X_col?=?X_col.permute(1,2,0).contiguous().view(X_col.size(1),-1)操作
permute(dims)功能是將tensor的維度換位
????比如原來的矩陣x(x,y,z),經(jīng)過x.permute(1,2,0)后將第0維變換到第三維,即矩陣變?yōu)閤(y,z,x),注意permute不改變原矩陣x,僅在計算中有用。
????因為不能保存,一般在permute后,接著進(jìn)行contiguous(),來返回一個contiguous copy,后續(xù)才能view()。
????一種可能的解釋:有些tensor并不是占用一整塊內(nèi)存,而是由不同的數(shù)據(jù)塊組成,而tensor的view()操作依賴于內(nèi)存是整塊的,這時只需要執(zhí)行contiguous()這個函數(shù),把tensor變成在內(nèi)存中連續(xù)分布的形式。
后續(xù)不用多說,view變化矩陣為(X_col_first_dim, _)形式。
3.adder.apply(W_col,X_col)
不太清楚,我覺得和class?adder(Function): 有關(guān),使用自己構(gòu)建的類,過兩天再看看吧,目前沒有明確答案,先記錄一下。

4.squeeze()和unsqueeze()
????X.unsqueeze(1)在X(2, 3)的第二維增加一個維度,使其維度變?yōu)椋?,1,3),如果需要在倒數(shù)第1個維度上增加一個維度,那么使用b.unsqueeze(-1),變?yōu)椋?,3,1)。
????所以squeeze()即為減少維度,注意只有維度為1時才會去掉,比如Y(1,2,3),Y.squeeze(0)或者Y.squeeze(-3)后,Y變成(2, 3)。
5.ctx.save_for_backward和ctx.saved_tensors
????按照圖中寫就好了,ctx.save_for_backward(W_col,X_col)保存反向傳播的參數(shù),
W_col,X_col?=?ctx.saved_tensors加載反向傳播參數(shù)。
水平有限,有問題歡迎指正^ ^
參考:https://blog.csdn.net/b15040915/article/details/105601027
???????????https://blog.csdn.net/qq_34914551/article/details/102940368
???????????https://blog.csdn.net/qq_40231500/article/details/90606872
????????????https://www.zhihu.com/question/366882609/answer/982196400