殘差網路
稠密連線densenet
凸優化梯度下降
處理後的任意乙個特徵在資料集中所有樣本上的均值為0、標準差為1。
標準化處理輸入資料使各個特徵的分布相近
利用小批量上的均值和標準差,不斷調整神經網路中間輸出,從而使整個神經網路在各層的中間輸出的數值更穩定。
參考 伯禹課程
殘差網路(resnet)
深度學習的問題:深度cnn網路達到一定深度後再一味地增加層數並不能帶來進一步地分類效能提高,反而會招致網路收斂變得更慢,準確率也變得更差。
殘差塊(residual block)
恒等對映:
左邊:f(x)=x
右邊:f(x)-x=0 (易於捕捉恒等對映的細微波動)
主要構建模組:
稠密塊(dense block): 定義了輸入和輸出是如何鏈結的。
過渡層(transition layer):用來控制通道數,使之不過大。
def conv_block(in_channels, out_channels):
blk = nn.sequential(nn.batchnorm2d(in_channels),
nn.relu(),
nn.conv2d(in_channels, out_channels, kernel_size=3, padding=1))
return blk
class denseblock(nn.module):
def __init__(self, num_convs, in_channels, out_channels):
super(denseblock, self).__init__()
net =
for i in range(num_convs):
in_c = in_channels + i * out_channels
self.net = nn.modulelist(net)
self.out_channels = in_channels + num_convs * out_channels # 計算輸出通道數
def forward(self, x):
for blk in self.net:
y = blk(x)
x = torch.cat((x, y), dim=1) # 在通道維上將輸入和輸出鏈結
return x
過渡層卷積層:來減小通道數
步幅為2的平均池化層:減半高和寬
優化與深度學習
優化與估計
儘管優化方法可以最小化深度學習中的損失函式值,但本質上優化方法達到的目標與深度學習的目標並不相同。
優化方法目標:訓練集損失函式值
深度學習目標:測試集損失函式值(泛化性)
優化在深度學習中的挑戰
證明:沿梯度反方向移動自變數可以減小函式值
(九)批量歸一化
1 引入 對輸入資料做了歸一化處理,就是將每個特徵在所有樣本上的值轉歸一化成均值0方差1。這樣我們保證訓練資料裡數值都同樣量級上,從而使得訓練的時候數值更加穩定。對於淺層模型來說,通常資料歸一化預處理足夠有效。輸出數值在只經過幾個神經層後通常不會出現劇烈變化。但對於深層神經網路來說,情況一般比較複雜...
批歸一化(Batch Normalization)
深度學習 批歸一化 batch normalization bn是由google於2015年提出,這是乙個深度神經網路訓練的技巧,它不僅可以加快了模型的收斂速度,而且更重要的是在一定程度緩解了深層網路中 梯度瀰散 的問題,從而使得訓練深層網路模型更加容易和穩定。所以目前bn已經成為幾乎所有卷積神經網...
批量歸一化
批量歸一化實際上也是乙個層,可以直接呼叫torch的api。我們在訓練頂部的層,實際上幹的就是在擬合底部層。所以頂部的層會收斂的很快,但是底部的層資料變化後,頂部又要重新進行訓練。乙個簡單的實現就是將分布的均值和方差進行固定。這個實現也很簡單。mu frac sum x text sigma fra...