名字**於**作者所在的實驗室visual geometry group,vgg提出了可以通過重複使用簡單的基礎塊來構建深度模型的思路。
我們常見的vgg網路有,vgg-11,vgg-16,vgg-19,不計算池化層數量,共有3個全連線層,(11-3)、(16-3)、(19-3)個卷積層。
這裡拿vgg-11舉例,那麼就有8個卷積層和3個全連線層。
vgg塊的組成規律是:連續使用數個相同的填充為1、視窗形狀為3×3的卷積層後接上乙個步幅為2、視窗形狀為2×2的最大池化層。卷積層保持輸入的高和寬不變,而池化層則對其減半。
def
vgg_block
(num_convs, num_channels)
:# (卷積次數,輸出通道數)
blk = tf.keras.models.sequential(
)for _ in
range
(num_convs)
:# 重複的卷積
blk.add(tf.keras.layers.conv2d(num_channels, kernel_size=
3, padding=
'same'
, activation=
'relu'))
blk.add(tf.keras.layers.maxpool2d(pool_size=
2, strides=2)
)return blk
每一次的卷積後,使用池化層壓縮資料和引數的量,並減小過擬合。
應該也有一定的處理影象敏感的作用。
vgg-11
import tensorflow as tf
# vgg 可以通過重複使用簡單的基礎塊來構建深度模型
defvgg_block
(num_convs, num_channels)
:# (卷積次數,輸出通道數)
blk = tf.keras.models.sequential(
)for _ in
range
(num_convs)
:# 重複的卷積
blk.add(tf.keras.layers.conv2d(num_channels, kernel_size=
3, padding=
'same'
, activation=
'relu'))
blk.add(tf.keras.layers.maxpool2d(pool_size=
2, strides=2)
)return blk
# 實現 vgg11
conv_arch =((
1,64)
,(1,
128),(
2,256),(
2,512),(
2,512)
)def
vgg(conv_arch)
: net = tf.keras.models.sequential(
)# 卷積過程,8個卷積層
for(num_convs, num_channels)
in conv_arch:
net.add(vgg_block(num_convs, num_channels)
)# 3個全連線層,vgg11=8+3
net.add(tf.keras.models.sequential(
[ tf.keras.layers.flatten(),
tf.keras.layers.dense(
4096
, activation=
'relu'),
tf.keras.layers.dropout(
0.5)
, tf.keras.layers.dense(
4096
, activation=
'relu'),
tf.keras.layers.dropout(
0.5)
, tf.keras.layers.dense(
10, activation=
'sigmoid')]
))return net
net = vgg(conv_arch)
# 觀察每一層的形狀,輸入形狀 ( 224 × 224 × 1 )
x = tf.random.uniform((1
,224
,224,1
))for blk in net.layers:
x = blk(x)
print
(blk.name,
'output shape:\t'
, x.shape)
網路結構形狀:
輸入的是:(1,224,224,1)
# input_shape:(1, 224, 224, 1)
sequential_1 output shape:(1
,112
,112,64
)sequential_2 output shape:(1
,56,56
,128
)sequential_3 output shape:(1
,28,28
,256
)sequential_4 output shape:(1
,14,14
,512
)sequential_5 output shape:(1
,7,7
,512
)sequential_6 output shape:(1
,10)
卷積神經網路之VGG
vgg可以看成是加深版的alexnet,整個網路由卷積層和全連線層疊加而成,和alexnet不同的是,vgg中使用的都是小尺寸的卷積核 3 times3 結構簡潔,如下圖vgg 19的網路結構 對比,前文介紹的alexnet的網路結構圖,是不是有種賞心悅目的感覺。整個結構只有 3 times3 的卷...
VGG神經網路
第一次使用多個小的卷積核 來代替大的卷積核,兩個3 3代替乙個5 5,三個3 3代替7 7。使用多個小的卷積核可以有效地降低神經網路所需要的的引數。並且並沒減少的感受野。唯一的不足是,在進行反向傳播時,中間的卷積層可能會導致占用更多的記憶體。感受野計算公式 p i 1 pi kernel 1 str...
深度卷積神經網路VGG 學習筆記
author karen simonyan andrew zisserman years 2014,published as a conference at iclr 2015 vggnet是2014年 imagenet large scalevisual recognition challenge...