VGG网络图如下,本文要深入讲解的是很常用的VGG16网络。在看懂VGG16网络之前,先补一下卷积神经网络的知识,然后用代码实例来更好说明VGG16网络

VGG网络

图片数据如何输入?

彩色图像有RGB三个颜色通道,分别是红、绿、蓝三个通道,这三个通道的像素可以用二维数组来表示,其中像素值由0到255的数字来表示。比如一张160x60的彩色图片,可以用160*60*3的数组表示。

什么是卷积?

卷积过程是使用一个卷积核(如图中的Filter),在每层像素矩阵上不断按步长扫描下去,每次扫到的数值会和卷积核中对应位置的数进行相乘,然后相加求和,得到的值将会生成一个新的矩阵。卷积核相当于卷积操作中的一个过滤器,用于提取我们图像的特征,特征提取完后会得到一个特征图。卷积核的大小一般选择3x3和5x5,比较常用的是3x3,训练效果会更好。卷积核里面的每个值就是我们需要训练模型过程中的神经元参数(权重),开始会有随机的初始值,当训练网络时,网络会通过后向传播不断更新这些参数值,知道寻找到最佳的参数值。对于如何判断参数值的最佳,则是通过loss损失函数来评估。

卷积过程

什么是padding?

在进行卷积操作的过程中,处于中间位置的数值容易被进行多次的提取,但是边界数值的特征提取次数相对较少,为了能更好的把边界数值也利用上,所以给原始数据矩阵的四周都补上一层0,这就是padding操作。在进行卷积操作之后维度会变少,得到的矩阵比原矩阵要小,不方便计算,原矩阵加上一层0的padding操作可以很好的解决该问题,卷积出来的矩阵和原矩阵尺寸一致。什么是池化pooling?

池化操作相当于降维操作,有最大池化和平均池化,其中最大池化(max pooling)最为常用。经过卷积操作后我们提取到的特征信息,相邻区域会有相似特征信息,这是可以相互替代的,如果全部保留这些特征信息会存在信息冗余,增加计算难度。通过池化层会不断地减小数据的空间大小,参数的数量和计算量会有相应的下降,这在一定程度上控制了过拟合。

最大池化max pooling

什么是Fletten?

Flatten将池化后的数据拉开,变成一维向量来表示,方便输入到全连接网络。什么是全连接层?

对n-1层和n层而言,n-1层的任意一个节点,都和第n层所有节点有连接。即第n层的每个节点在进行计算的时候,激活函数的输入是n-1层所有节点的加权。

什么是Dropout?

在训练过程中,按照一定的比例将网络中的神经元进行丢弃,可以防止模型训练过拟合的情况。VGG16网络

VGG16网络

224x224x3的彩色图表示3通道的长和宽都为224的图像数据,也是网络的输入层白色部分为卷积层,红色部分为池化层(使用最大池化),蓝色部分为全连接层,其中卷积层和全连接层的激活函数都使用relu总的来说,VGG16网络为13层卷积层+3层全连接层而组成VGG16网络代码实例讲解

使用keras框架搭建的VGG16网络开始输入(60,160,1)的图像数据,即宽为60,高度为160的单通道灰度图像,使用灰度图是为了加快模型的训练Conv2D(64, (3,3), name='conv1',padding='same', kernel_initializer='he_uniform')

Conv2D卷积层的padding为"same",即给图像矩阵四周都加上0。卷积核使用"he_uniform",大小为3x3,卷积核个数为64,一个卷积核扫完图像矩阵数据后,生成一个新的矩阵,有64个卷积核就会生成64 层新的矩阵。BatchNormalization()(conv1)

使用BN层,加快模型的训练和防止模型训练过拟合Activation('relu')(bn1)

卷积后使用relu激活函数MaxPooling2D(pool_size=(2, 2), padding='same', name='pool3')(act7)

使用最大池化,池化的小矩阵是2x2,默认了也是2x2的步长。经过池化后,矩阵的长宽都降低一半,由64*160*60的数据变成64*80*30其他同理,只是卷积核大小和卷积层个数做了修改。x = Flatten()(pool3)

做了13层卷积和相应的池化操作后,使用Flatten(),将数据拉平,变成一维向量x1 = Dense(4096)(x)bnx1 = BatchNormalization()(x1)actx1 = Activation('relu')(bnx1)drop9 = Dropout(0.4)(actx1)

最后做3层全连接层,前两个全连接层的神经元个数为4096,4096只是VGG16论文里提供的参考值,具体可以自己做测试修改。x = [Dense(10, activation='softmax', name='func%d'%(i+1))(x) for i in range(4)]

VGG16网络里最后的全连接层是1000个神经元,如果你想用VGG16 给自己的数据作分类任务,这里就需要改成你预测的类别数。这个VGG16网络我是用于做4位数字验证码的识别,所以最后的全连接层我修改为创建4个全连接层,区分10类,分别识别4个字符。至此VGG16的讲解就结束了,如果想更加了解图像矩阵大小的变化,可以打印模型的结构图,或者自行打印图像的纬度。

vgg16卷积层的计算量_卷积神经网络VGG16详解相关推荐

  1. vgg16卷积层的计算量_卷积神经网络VGG16参数数量的计算和理解

    先说一下我对神经网络的理解:神经网络就是用巨量的简单的非线性函数组合起来拟合复杂的未知函数.比如,人类识别不同的物体.识别不同动物.不同植物是个复杂的未知函数.虽然未知,但没事,我们的神经网络可以用巨 ...

  2. vgg16卷积层的计算量_深度学习_经典网络_VGG16和ResNet152哪个参数量更多

    首先,我们我们知道深度学习中网络的计算量代表时间复杂度,参数量代表空间复杂度. 从ResNet的论文中可知(ResNet论文可在这个文章中的第六部分找到)152层的残差网络在时间复杂度上和VGG16是 ...

  3. vgg16卷积层的计算量_vgg16模型参数量和使用的的内存计算

    关于VGG-16模型的内存和参数的计算过程如下. INPUT: [224x224x3] memory: 224*224*3=150K weights: 0 CONV3-64: [224x224x64] ...

  4. 卷积层参数计算与设置

    卷积层维度计算与设置 卷积结构 CNN结构: Input(输入层)----> Conv(卷积)---->Relu(激活)---->Pool(池化)---->FC(全连接) 输入 ...

  5. Lesson 16.1016.1116.1216.13 卷积层的参数量计算,1x1卷积核分组卷积与深度可分离卷积全连接层 nn.Sequential全局平均池化,NiN网络复现

    二 架构对参数量/计算量的影响 在自建架构的时候,除了模型效果之外,我们还需要关注模型整体的计算效率.深度学习模型天生就需要大量数据进行训练,因此每次训练中的参数量和计算量就格外关键,因此在设计卷积网 ...

  6. 卷积神经网络参数计算及卷积层输出尺寸计算

    一.卷积神经网络参数计算 CNN一个牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数,所谓权值共享就是同一个Feature Map中神经元权值共享,该Feature Map中的所 ...

  7. 小数加分数怎样计算讲解_干货!整数、小数、分数怎么计算更简便?含例题详解...

    原标题:干货!整数.小数.分数怎么计算更简便?含例题详解 小学数学中,一直贯穿着一个内容,那就是简便运算.在整数范围.小数范围.分数范围内都做为一个内容重复出现.而这个内容也正是小学数学中的一个难点. ...

  8. OpenGL ES _ 着色器_片断着色器详解

    OpenGL ES _ 入门_01 OpenGL ES _ 入门_02 OpenGL ES _ 入门_03 OpenGL ES _ 入门_04 OpenGL ES _ 入门_05 OpenGL ES ...

  9. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

最新文章

  1. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(配置填充色调色板、brewer调色板、灰度比例)实战
  2. Google 开源 Pigweed,涉足嵌入式开发
  3. 安装rebar时提示Uncaught error in rebar_core
  4. 调整屏幕亮度,调整字体大小
  5. svn教程----示例二:测试人员拥有读权限
  6. 微软亚洲研究院发布“人立方关系搜索”
  7. jqGrid,REST,AJAX和Spring MVC集成
  8. 在大公司天天调参数,感觉快废了~
  9. MySQL 8.0 安装部署3个注意事项
  10. linux和python那个好学_Python和C#哪个好学?老男孩python
  11. 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法
  12. Linux 快捷键大全
  13. 485通讯的校验和_三菱FX3U与变频器通讯程序如何编写
  14. 【线上活动】材料计算训练营(量子力学、物理、化学、新能源、碳中和、生物制药、化工、新材料、催化、锂电池、半导体)
  15. PHP从基础到高级总结
  16. 武侯计算机实验小学小升初,2018年成都小学升初中划片最新版!(含2017年对比)...
  17. 电子科大自考c语言试题,2016四川省大学一流学科排行榜,电子科大跃居首位
  18. Facebook Marketing: Advanced Advertising Facebook营销:高级广告 Lynda课程中文字幕
  19. 对接微信公众号出现【invalid ip xxx.xxx.xxx.xxx 】
  20. 关于intrins.h头文件的介绍,做流水灯时候更方便

热门文章

  1. 环境对人类微生物组及其对非传染性疾病的影响
  2. android手机助手PC,电脑手机助手app
  3. MySQL连接报ERROR 2003(HY000) Can‘t connect to MySQL server on ‘xxxIP‘(113)
  4. 本地安装kylin学习环境
  5. 七牛云大数据平台建设实践
  6. android老化软件,Old Face Changer Camera变老换脸相机
  7. 哈佛商学院 MBA 课程介绍
  8. 大宋王朝三百年(1) 王泽宾
  9. 尉氏短期计算机培训,在尉氏烘焙短期培训时尚魅影烘焙培训
  10. Lightly:新一代的 PHP IDE