看FCOS時的小細節總結

weixin_45963617發表於2020-10-14

1.permute(多維陣列,[維數的組合])
例:a=rand(2,3,4);這是一個三維陣列,各維長度分別為2,3,4
%現在交換第一維和第二維:
permute(A,[2,1,3]) %變成3* 2*4的矩陣。

2.仿射層(Affine Layer)
神經網路中的一個全連線層。仿射(Affine)的意思是前面一層中的每一個神經元都連線到當前層中的每一個神經元。在許多方面,這是神經網路的「標準」層。仿射層通常被加在卷積神經網路或迴圈神經網路做出最終預測前的輸出的頂層。仿射層的一般形式為 y = f(Wx + b),其中 x 是層輸入,w 是引數,b 是一個偏差向量,f 是一個非線性啟用函式。

3.Mish的作用
Mish=x * tanh(ln(1+e^x)),
其他的啟用函式,ReLU是x = max(0,x),Swish是x * sigmoid(x)。

PyTorch的Mish實現:
在這裡插入圖片描述
Tensorflow中的Mish函式:
Tensorflow:x = x *tf.math.tanh(F.softplus(x))

為什麼Mish表現這麼好?
以上無邊界(即正值可以達到任何高度)避免了由於封頂而導致的飽和。理論上對負值的輕微允許允許更好的梯度流,而不是像ReLU中那樣的硬零邊界。
最後,可能也是最重要的,目前的想法是,平滑的啟用函式允許更好的資訊深入神經網路,從而得到更好的準確性和泛化。

4.b = a[i:j] 表示複製a[i]到a[j-1],以生成新的list物件

a = [0,1,2,3,4,5,6,7,8,9]
b = a[1:3] # [1,2]
當i預設時,預設為0,即 a[:3]相當於 a[0:3]
當j預設時,預設為len(alist), 即a[1:]相當於a[1:10]
當i,j都預設時,a[:]就相當於完整複製一份a

b = a[i:j:s]表示:i,j與上面的一樣,但s表示步進,預設為1.
所以a[i:j:1]相當於a[i:j]
當s<0時,i預設時,預設為-1. j預設時,預設為-len(a)-1
所以a[::-1]相當於 a[-1:-len(a)-1:-1],也就是從最後一個元素到第一個元素複製一遍,即倒序。

參考文章:https://blog.csdn.net/qq_30468133/article/details/85074003
https://www.cnblogs.com/hmy-blog/p/6555939.html
https://blog.csdn.net/u011984148/article/details/101444274
https://blog.csdn.net/mingyuli/article/details/81604795?utm_medium=distribute.pc_feed_404.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_feed_404.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecas

相關文章