目錄
卷積殘差塊——The convolutional block
-
恆等殘差塊——The identity block
The identity block是ResNets中使用的標準塊,對應於輸入激活(例如 a [1])與輸出激活具有相同維度(例如a [l +2])。
(1)、兩層恆等殘差塊
下圖展示了ResNets的兩層的恆等殘差塊 identity block:
上面的路徑是“shortcut path”,下面的路徑是“main path”,在這個圖中,同樣也進行了CONV2D和ReLU操作,爲了加速訓練的速度也加入了Batch正則化“Batch Norm”,Batch Norm在Keras框架中就一句代碼。
(2)、三層恆等殘差塊
在下面的這個例子中,將實際上實現一個略微更強大的版本,這個跳轉連接“跳過”3個隱藏層而不是2層。
(3)、下面是細節的步驟:
a、主路徑的第一部分:
第一個CONV2D的過濾器F1大小是(1*1),步長s大小爲(1*1),卷積填充padding="valid"即無填充卷積。
將這一部分命名爲conv_name_base+'2a',初始化時利用種子爲seed=0。
第一個BatchNorm是在通道/厚度的軸上進行標準化,並命名爲bn_name_base+'2a'
.
應用ReLU激活函數,這裏沒有超參數。
b、主路徑的第二部分:
第二個CONV2D的過濾器F2大小是(f*f),步長s大小爲(1*1),卷積填充padding="same"即相同卷積。
將這一部分命名爲conv_name_base'2b',初始化時利用種子爲seed=0。
第二個BatchNorm是在通道/厚度的軸上進行標準化,並命名爲bn_name_base+'2b'
.
應用ReLU激活函數,這裏沒有超參數。
c、主路徑的第三部分:
第三個CONV2D的過濾器F3大小是(1*1),步長s大小爲(1*1),卷積填充padding="valid"即無填充卷積。
將這一部分命名爲conv_name_base+'2c',初始化時利用種子爲seed=0。
第三個BatchNorm是在通道/厚度的軸上進行標準化,並命名爲bn_name_base +'2c'
.
這一部分中沒有應用ReLU激活函數。
d、最後部分:
將shortcut和輸入一起添加到模塊中,然後再應用ReLU激活函數,這裏沒有超參數。
-
卷積殘差塊——The convolutional block
(1)、綜述
ResNet的convolutional_block是另一種類型的殘差塊,當輸入和輸出尺寸不匹配時,可以使用這種類型的塊。
與identity block恆等殘差塊不同的地方是:在shortcut路徑中是一個CONV2D的層。
shortcut路徑中的CONV2D層用於將輸入x調整爲不同的尺寸,以便在添加shortcut殘差塊的值返回到主路徑時需要最後添加的尺寸相匹配(與矩陣Ws的作用相同)。例如,要將激活值維度的高度和寬度縮小2倍,可以使用步長爲2的1x1卷積。shortcut路徑上的CONV2D層路徑不使用任何非線性激活函數。 它的主要作用是隻應用一個(學習的)線性函數來減小輸入的尺寸,使得尺寸匹配後面的添加步驟。
(2)、convolutional_block的細節步驟
a、主路徑第一部分
第一個CONV2D的過濾器F1大小是(1*1),步長s大小爲(s*s),卷積填充padding="valid"即無填充卷積。
將這一部分命名爲conv_name_base+'2a'。
第一個BatchNorm是在通道/厚度的軸上進行標準化,並命名爲bn_name_base+'2a'
.
應用ReLU激活函數,這裏沒有超參數。
b、主路徑第二部分
第二個CONV2D的過濾器F2大小是(f*f),步長s大小爲(1*1),卷積填充padding="same"即相同卷積。
將這一部分命名爲conv_name_base+'2b',初始化時利用種子爲seed=0。
第二個BatchNorm是在通道/厚度的軸上進行標準化,並命名爲bn_name_base+'2b'
.
應用ReLU激活函數,這裏沒有超參數。
c、主路徑第三部分
第三個CONV2D的過濾器 F3大小是(1*1),步長s大小爲(1*1),卷積填充padding="valid"即無填充卷積。
將這一部分命名爲 conv_name_base+'2c',初始化時利用種子爲seed=0。
第三個BatchNorm是在通道/厚度的軸上進行標準化,並命名爲bn_name_base+'2c'
.
這一部分中沒有應用ReLU激活函數。
d、shortcut 路徑
該部分CONV2D的過濾器 F3大小是(1*1),步長s大小爲(s*s),卷積填充 padding="valid"即無填充卷積。
將這一部分命名爲conv_name_base+'1'。
該部分BatchNorm是在通道/厚度的軸上進行標準化,並命名爲bn_name_base+'1'
e、最後部分
將shortcut和輸入一起添加到模塊中,然後再應用ReLU激活函數,這裏沒有超參數。