廣西網絡推廣

NEWS INFORMATION

網絡資(zī)訊

【每日一(yī)題】網絡層數越深,梯度彌散現象可能會越嚴重

作者:admin 發布時間:2020-02-12

【每日一(yī)題】網絡層數越深,梯度彌散現象可能會越嚴重

、VGG等網絡模型,将神經網絡的發展帶到了幾十層的階段。研究人員(yuán)發現,網絡層越深,越有可能獲得更好的泛化能力。但随着模型的深入,網絡變得越來越難訓練殘差網絡的核心設計,主要是由于梯度分(fēn)散現象。在更深的神經網絡中(zhōng)間,當梯度信息從網絡的最後一(yī)層傳輸到網絡的第一(yī)層時,在傳輸過程中(zhōng)梯度會接近于0。網絡層越深,梯度分(fēn)散現象可能越嚴重。有什麽方法可以實現深度殘差網絡?今天就來分(fēn)析一(yī)下(xià)番茄的加速度。

深度殘差網絡_殘差網絡的核心設計_深度殘差網絡知(zhī)乎

爲了解決這個問題,研究人員(yuán)嘗試在深度神經網絡中(zhōng)添加一(yī)種淺層神經網絡的回退機制。當深度神經網絡很容易回退到淺層神經網絡時,深度神經網絡可以實現與淺層神經網絡相媲美的模型性能而不會更差。

通過添加直接連接在輸入和輸出之間的 Skip,可以爲神經網絡提供回退功能。以VGG13深度神經網絡爲例,假設在VGG13模型中(zhōng)觀察到梯度彌散現象,而10層網絡模型沒有觀察到梯度彌散現象,那麽可以考慮在最後兩個卷積層中(zhōng)加入Skip . 這樣網絡模型就可以自動選擇是通過兩個卷積層完成特征變換,還是跳過兩個卷積層選擇Skip,或者結合兩個卷積層的輸出并Skip。

層數回退機制是通過在卷積層的輸入和輸出之間添加Skip來實現的。輸入經過兩個卷積層得到特征變換後的輸出ℱ(·),将對應的元素加到輸入中(zhōng)得到最終的輸出:H(x) = x + f(x)

完成

1.定義殘差模塊

首先新建一(yī)個類,在初始化階段的 block中(zhōng)創建需要的卷積層、激活函數層等,首先新建一(yī)個f(·)卷積層:

作爲 tf

來自喀拉斯

來自 .keras ,

類(.Layer):

# 殘差模塊

def (自我(wǒ), , =1):

超級(,自我(wǒ))。()

# 第一(yī)個卷積單元

self.conv1 = .(, (3, 3), =, ='same')

self.bn1 = .()

self.relu = .('relu')

# 第二個卷積單元

self.conv2 = .(, (3, 3), =1, ='same')

self.bn2 = .()

if != 1:# 通過1x1卷積完成形狀匹配

自己。= ()

self..add(.(, (1, 1), =))

else: # 形狀匹配,直接連接

自己。= x:x

def call(self, , =None):

# [b, h, w, c],通過第一(yī)個卷積單元

out = self.conv1()

out = self.bn1(out)

out = self.relu(out)

# 通過第二個卷積單元

out = self.conv2(out)

out = self.bn2(out)

# 按模塊

=自我(wǒ)。()

# 2個路徑輸出直接相加

= .add([輸出, ])

= tf.nn.relu() # 激活函數

2.實現類

類(keras.Model):

# 通用實現類

def (self, , =10): # [2, 2, 2, 2]

超級(,自我(wǒ))。()

# 根網絡,預處理

自己。詞幹 = ([.(64, (3, 3), =(1, 1)),

.(),

.('relu'),

.(=(2, 2), =(1, 1), ='same')

])

# 堆疊4個block,每個block包含多個,設置步驟不同

自己。=自我(wǒ)。(64,[0])

自己。=自我(wǒ)。(128,[1]殘差網絡的核心設計,=2)

自己。=自我(wǒ)。(256,[2],=2)

自己。=自我(wǒ)。(512,[3],=2)

# 逐層減小(xiǎo)高度和寬度爲1x1

自己。= .2D()

# 最後連接一(yī)個全連接層分(fēn)類

self.fc = .Dense()

def call(self, , =None):

# 通過根網絡

x = 自我(wǒ)。幹()

# 一(yī)次通過 4 個模塊

x = 自我(wǒ)。(x)

x = 自我(wǒ)。(x)

x = 自我(wǒ)。(x)

x = 自我(wǒ)。(x)

# 通過池化層

x = 自我(wǒ)。(x)

# 通過全連接層

x = self.fc(x)

X

def (自我(wǒ), , , =1):

# 輔助函數,堆疊

= ()

# 隻有第一(yī)步可能不是1,實現下(xià)采樣

。添加((, ))

for _ in range(1, ): #其他步驟爲1

.add((, =1))

以上就是實現深度殘差網絡的原理和方法。歡迎指正。

了解更多學習網絡推廣知(zhī)識,就來廣西網絡推廣。

上一(yī)篇:一(yī)下(xià):傳統制造行業爲什麽要做網絡營銷推廣?(一(yī))
下(xià)一(yī)篇:深度殘差網絡的主要分(fēn)析及操作

广西南宁弄潮营销策划有限责任公司 :  版權所有