卷积神经网络各层的作用以及API的设计

作者: 一只玩基金的猪 | 来源:发表于2019-07-17 00:27 被阅读0次

卷积神经网络各层的作用以及API的设计

      对于很多小伙伴来说,每次接受一个新名称都是一种进步与挑战,而我认为学习是一个0与1的过程,到达1也许需要经历千辛万苦,但是当你到达1后,这种喜悦会让你认为过程的艰苦是值得的。这篇文章主要是对卷积神经网络中重要的四个层面的介绍,我也尽量会以最通俗的语言去进行介绍,希望您可以有收获。

1、神经网络的层次结构

神经网络包括三大层:输入层,隐藏层,输出层。

其中最为重要的是隐藏层,它包括四大部分:

卷积层

激励层

池化层

全连接层

接下来我将对这四层进行讲解

2、卷积层

2.1  卷积层的作用

通过卷积核在原始图像上平移来提取特征。就好比人观察图片,通过上下扫描图片,提取想要的信息。

2.2   卷积层相关概念的介绍

我们先来了解几个概念:图片大小,卷积核大小,偏置项,步长,零填充

图片大小 [ 长*宽*通道数 ]:图片分为黑白图片和彩色图片。

对于黑白图片它的大小 = 长 * 宽 *1 (通道数为1)

对与RGB彩色图片的大小 = 长 * 宽 * 3(通道数为3)

卷积核的大小:我们一般习惯用1 * 1     3 * 3    5 * 5像素,作为我们的卷积核,卷积核也可以理解为人工神经网络中的权重大小。(卷积核一般随机生成,包含[0,1,-1]的矩阵)

偏置项:因为在进行图像线性处理的,需要对图像进分割,偏置项的作用使分割的线性图像可以不过原点。偏置项的作用

步长:卷积核需要对图像像素进行计算,每次计算后所需要移动的像素大小。

零填充,因为卷积核按照相应步长移动,卷积核可能会超出图片的范围,因此可以在图片外围进行零填充,保证每一个卷积核都有相应的值与之计算。

2.3 卷积层输出图片的生成

上图给出的是单通道如何生成输出图像 

输入图片大小为5 * 5 * 1

卷积核大小为3 * 3

步长为1

偏置项为0

无零填充

得到的生成的输出图像大小为3 * 3 * 1

可以看出来输入图像与卷积核的计算是一一对应的关系。

上面张图片展示的是三通道输入图像如何生成输出图像

输入图片大小为5 * 5 * 1

卷积核大小为3 * 3

步长为2

偏置项为1

有零填充,大小为1

这里的蓝色矩阵输入的图像,粉色矩阵就是卷积核。这里表示了有两个神经元(w0,w1)。绿色矩阵就是经过卷积运算后的输出矩阵。

下面给出动态图

2.4 生成图片大小的计算

输入体积大小为H1*W1*D1

四个超参数:

卷积核的数量K

卷积核大小F(F表示卷积核的边长)

步长S

零填充大小P

输出体积大小H2*W2*D2

H2=(H1-F+2P)/S+1

W2=(W1-F+2P)/S+1

D2=K

给出一道面试例题

例题

(*可以考虑计算验证一下2.3中三通道图像,输入图片大小为5*5*3,卷积核为3*3,卷积核的数量为2,生成图片大小为3*3*3)


2.5 卷积层API的设计

 tf.nn.conv2d(input,fliter,strides=,padding=,name=None)

各个参数的介绍

input:                #输入图片大小

要求形状[batch,height,width,channel] #(长宽高,和图片数)

类型为float32,64    

filter:                  #卷积核数目

weigths #(权重)(核大小)

变量initial_value=random_normal(shape=[F,F,3(RGB图片)或1(黑白图片),K])

(字母的意思参考2.4中给定字母的介绍)

strides:                    #步长

[1,strides,strides,1]

padding:’SAME’      #零填充大小

“SAME”:越过边缘取样

“VALID”:不越过边缘取样

3、激活层

3.1 激活层的作用

激活层最重要的便是激活函数,它的主要作用是加入非线性因素的,将特征映射到高维的非线性区间进行解释,解决线性模型所不能解决的问题。

 3.2 激活函数

首先我们先了解两个激活函数:sigmoid 函数和 ReLU 函数。

sigmoid函数我们在人工神经网络中我们将他作为阈值函数,将变量映射到0和1之间

sigmoid的函数表达式为 

图像为

因为卷积神经网络需要进行大量的像素提取计算,而sigmoid求导后,结果复杂,计算量也相当的大。同时随着图形的增长梯度会逐渐消失,并且输入的范围大致为[-6,6]。因此我们引入新的激活函数 ReLU 函数

ReLU函数的表达式和图形如下

ReLU函数的优点主要有三点

1、计算速度快

2、解决了梯度消失

3、图象没有负像素

有了激活函数,我们就来看下API 的设计

3.3 激活层API的设计

卷积层的API利用tensorflow非常简单

tf.nn.relu(features)

各参数的介绍

features            #卷积后的偏置结果

4、池化层            

4.1 池化层的作用

池化层主要是利用图形各像素之间的联系,压缩数据和参数的量,减少过拟合。池化层所做的工作简言之就是将图片压缩。

这里再展开叙述池化层的具体作用。

1. 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

2. 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。

3. 在一定程度上防止过拟合,更方便优化。

池化方法一般包括:最大池化和平均池化,而最为普遍的是最大池化。找到池化窗口中最大的数作为输出值。

4.2 池化层API的设计

tf.nn.max_pool(value,ksize=,strides=,padding)

各参数的介绍

value:4-D Tensor形状(batch,height,width,channels)

channel:卷积核的数量

ksize:池化窗口[1,ksize,ksize,1]

strides:步长大小[1,strides,strides,1]

padding:”SAME”,”VALID”    

4.3 池化层的面试题

(参考卷积层的计算)

5、全连接层

前面的卷积和池化相当于在做特征工程,最后的全连接层起到了“分类器”的作用。        


由于能力有限,参考网上一些博客和视频,根据自己的理解和学习进行的编写,这篇文章有助于大家理解卷积神经网络四大层次。同时后面提供的哔哩哔哩链接,有助于深度学习的初学者进行学习。最后感激您的阅读,有问题也希望您能够指出,我们一同进步。

参考文献:

黑马程序员哔哩哔哩深度学习讲解

冠军的试炼博客关于卷积神经网络的讲解

相关文章

  • 卷积神经网络各层的作用以及API的设计

    卷积神经网络各层的作用以及API的设计 对于很多小伙伴来说,每次接受一个新名称都是一种进步与挑战,而我认为学习...

  • 卷积神经网络(CNN)学习笔记

    卷积神经网络(CNN) 1.神经网络结构示意图如下 相比于普通的神经网络,卷积神经网络多了卷积层以及池化层,还增加...

  • 卷积神经网络的组件

    卷积神经网络的组件包括输入层,卷积层,激活层,池化层,全连接层。 输入层 输入层的作用是把输入数据送入卷积神经网络...

  • 卷积神经网络 CNN(1)

    今天给大家介绍一下什么是卷积神经网络,以及神经网络是与普通的神经网络有什么不同。卷积神经网络是为了简化普通神经网络...

  • 卷积神经网络(CNN)

    (1)定义:由一个或多个卷积层、池化层、全连接层组成,同时通过权重关联各层之间的神经元的神经网络,这一结构使得卷积...

  • CS231n 卷积神经网络: 架构, 卷积/池化层(上)

    卷积神经网络: 架构, 卷积/池化层(上) 卷积神经网络: 架构, 卷积/池化层(上) 卷积神经网络(CNNs/C...

  • 什么是卷积神经网络

    哈喽,大家好,今天来让我们了解下什么是卷及神经网络,在这篇文章中,我会介绍什么是卷积神经网络,以及卷积神经网络的基...

  • 卷积神经网络中不同类型的卷积方式介绍

    之前在文章《<模型汇总_1>牛逼的深度卷积神经网络CNN》详细介绍了卷积神经网络的基本原理,以及常见的基本模型,如...

  • 视觉

    卷积神经网络整理 各种卷积神经网络变形

  • 用卷积神经网络实现简单的图片区分(网络结构篇)

    1.请用结构图的形式画出实现的框架是什么? 2.卷积神经网络模型的结构是什么?每一层又有什么作用? 卷积神经网络主...

网友评论

    本文标题:卷积神经网络各层的作用以及API的设计

    本文链接:https://www.haomeiwen.com/subject/dryxlctx.html