经典卷积神经网络之VggNet

        当卷积神经网络被提出来之后,我们一直想要探讨的问题就是卷积神经网络的深度,深度越深代表模型越复杂,但是其训练难度也会加大,那么卷积神经网络到底可以有多深,是不是越深越好。为此在2014年,由牛津大学计算机视觉组和DeepMind公司,提出了VggNet网络结构,这是一种结构层次比较深的卷积神经网络架构。
网络架构:
在这里插入图片描述
        我们可以看到上图中的VggNet有六种结构,分别是:A、A-LRN、B、C、D、E,他们之间最大的区别就是连续卷积的次数,同时在A-LRN中使用到的LRN表示的是Local Response Normalization,也就是局部响应归一化层,在C中使用到了 1 × 1 1\times1 1×1卷积,这种结构的卷积主要的目的就是降低维度,减少计算参数,在之后的许多网络结构当中都使用到了 1 × 1 1\times1 1×1卷积。
        下面在Tensorflow的环境下,搭建VggNet中的A级别的架构:

import tensorflow as tf
from tensorflow.keras import layers
# 输入层
input = layers.Input((224, 224, 3))
# 卷积层1
conv1 = layers.Conv2D(64, 3, 1, padding="same", activation="relu")(input)
pool1 = layers.MaxPool2D(3, 2, padding="valid")(conv1)
# 卷积层2
conv2 = layers.Conv2D(128, 3, 1, padding="same", activation="relu")(pool1)
pool2 = layers.MaxPool2D(3, 2, padding="valid")(conv2)
# 卷积层3
conv3 = layers.Conv2D(256, 3, 1, padding="same", activation="relu")(pool2)
conv3_2 = layers.Conv2D(256, 3, 1, padding="same", activation="relu")(conv3)
pool3 = layers.MaxPool2D(3, 2, padding="valid")(conv3_2)
# 卷积层4
conv4 = layers.Conv2D(256, 3, 1, padding="same", activation="relu")(pool3)
conv4_2 = layers.Conv2D(256, 3, 1, padding="same", activation="relu")(conv4)
pool4 = layers.MaxPool2D(3, 2, padding="valid")(conv4_2)
# 卷积层5
conv5 = layers.Conv2D(256, 3, 1, padding="same", activation="relu")(pool4)
conv5_2 = layers.Conv2D(256, 3, 1, padding="same", activation="relu")(conv5)
pool5 = layers.MaxPool2D(3, 2, padding="valid")(conv5_2)
# 展平
flatten = layers.Flatten()(pool5)
# 全连接层1
dense1 = layers.Dense(4096, activation="relu")(flatten)
# 全连接层2
dense2 = layers.Dense(4096, activation="relu")(dense1)
# 输出层
output = layers.Dense(1000, activation="softmax")(dense2)
# 产生模型
model = tf.keras.Model(inputs=input, outputs=output)
# 打印模型
print(model.summary())

在这里插入图片描述
我们可以看到VggNet的结构相比于LeNet-5以及AlexNet,它结构的深度更深,并且采用了连续卷积的结构(之前我们一般在一个卷积之后就会跟上一个池化层),同时它也采用了 1 × 1 1\times1 1×1的卷积。可以看出VggNet想要探索卷积神经网络的深度到底可以有多深,是不是越深就越好,但是它的网络结构还是顺序的堆叠。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值