当前位置:   article > 正文

经典卷积神经网络结构——VGG网络结构详解(卷积神经网络入门,Keras代码实现)_深度卷积神经网络经典模型--vgg网络(卷积层、池化层、全连接层)实验目的

深度卷积神经网络经典模型--vgg网络(卷积层、池化层、全连接层)实验目的

背景简介

2012年 AlexNet 在 ImageNet 上显著的降低了分类错误率,深度神经网络进入迅速发展阶段。在2014年牛津大学机器人实验室尝试构建了更深的网络,文章中称为"VERY DEEP CONVOLUTIONAL NETWORKS",如VGG16,有16层,虽然现在看起来稀疏平常,但与 AlexNet 相比,翻了几倍。这个阶段,主要是没有解决网络太深梯度反向传播消失的问题,且受限于GPU等硬件设备的性能,所以深度网络不易于训练。不过,VGG 显然是当时最好的图像分类模型,斩获 ILSVRC 比赛冠军。顺便说下,2012年之后,标准数据集主要是ImageNet,到后来又有微软的COCO数据集。

原论文地址

https://arxiv.org/pdf/1409.1556.pdf
文章发在 ICLR( International Conference on Learning Representations) 2015会议上,截止目前引用次数为27081

个人github实现

https://github.com/uestcsongtaoli/vgg_net

模型介绍

这里重点介绍VGG16
VGG 16
上图上半部分相对直观,下半部分是一种常见的普通网络结构的表示方法,下半部分最后一层不应该是4096,应该是分类问题的类别数目 num_classes。
该模型可以简单分为5个 stage,(我猜测这种思想来自于 AlexNet 的5层卷积,可以参考我写的关于AlexNet的文章结构介绍部分)每层两卷积核池化组成,最后接3层全连接用于分类。

先定义 conv block 包括卷积、BatchNormalization 和 Activation:

def conv_block(layer, filters, kernel_size=(3, 3), strides=(1, 1), padding='same', name=None):
    x = Conv2D(filters=filters,
               kernel_size=kernel_size,
               strides=strides,
               padding=padding,
               kernel_initializer="he_normal",
               name=name)(layer)
    x = BatchNormalization()(x)
    x = Activation('relu')(x)
    return x
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Stage 1
  1. 卷积层Conv_1_1
  2. 卷积层Conv_1_2
  3. 池化层 max_pool_1
    x = conv_block(input_layer, filters=64, kernel_size=(3, 3), name="conv1_1_64_3x3_1"
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/496871
    推荐阅读
    相关标签
      

    闽ICP备14008679号