卷积神经网络笔记(1.卷积层)

卷积神经网络基本概念
  • 卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层(池化层)构成的特征抽取器。由此可知,普通的网络只有分类之类的作用,像svn等。
  • 在CNN的一个卷积层中,通常包含若干个特征图(featureMap),每个特征图由一些矩形排列的的神经元组成,同一特征图的神经元共享权值,这里共享的权值就是卷积核。
  • 卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。
  • 子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。
基本单位——神经元
logistic回归模型

通过其数学公示,可以体现出神经元的特性,用这个模型仿真神经元
在这里插入图片描述

多个神经元联合就是神经网络

在这里插入图片描述

神经网络的训练方法也同Logistic类似,不过由于其多层性,还需要利用链式求导法则对隐含层的节点进行求导,即梯度下降+链式求导法则——反向传播

卷积层

前言

卷积层+激活函数+池化层+全连接层的结构实用,似乎已经成为搭建卷积神经网络的标配。

简介

卷积是一种有效提取图片特征的方法 。 一般用一个正方形卷积核,遍历图片上的每一个像素点。图片与卷积核重合区域内相对应的每一个像素值,乘卷积核内相对应点的权重,然后求和, 再加上偏置后,最后得到输出图片中的一个像素值。

三种情况

图片分灰度图和彩色图,卷积核可以是单个也可以是多个,因此卷积操作分三种情况

单通道输入,单卷积核

简介

单通道指的是输入为灰度图,单卷积核值卷积核个数是1个
在这里插入图片描述
5x5x1 的灰度图片,1 表示单通道,5x5 表示分辨率,共有 5 行 5列个灰度值。若用一个 3x3x1 的卷积核对此 5x5x1 的灰度图片进行卷积,偏置项b=1,则求卷积的计算是:(-1)x1+0x0+1x2+(-1)x5+0x4+1x2+(-1)x3+0x4+1x5+1=1(注意不要忘记加偏置 1)

多通道输入,单卷积核

简介

多数情况下,输入的图片是 RGB 三个颜色组成的彩色图,输入的图片包含了红、绿、蓝三层数据

  • 卷积核的深度(通道数)应该等于输入图片的通道数,所以使用 3x3x3的卷积核,最后一个 3 表示匹配输入图像的 3 个通道,这样这个卷积核有三通道,每个通道都会随机生成 9 个待优化的参数,一共有 27 个待优化参数 w 和一个偏置 b。
    在这里插入图片描述

  • 这里还是单个卷积核的情况,但是一个卷积核可以有多个通道。默认情况下,卷积核的通道数等于输入图片的通道数

多通道输入,多卷积核

简介

多通道输入、多卷积核是深度神经网络中间最常见的形式。指的是多通道输入,且用多个卷积核的情况。

以3通道输入,2个卷积核为例:

  • 先取出一个卷积核与3通道的输入进行卷积,这个过程就和多通道输入,单卷积核一样,得到一个1通道的输出output1。同样再取出第二个卷积核进行同样的操作,得到第二个输出output2
  • 将相同size的output1与output2进行堆叠,就得到2通道的输出output。
    在这里插入图片描述
  • 图中输入X:[1,h,w,3]指的是:输入1张高h宽w的3通道图片。
  • 卷积核W:[k,k,3,2]指的是:卷积核尺寸为3*3,通道数为3,个数为2。

总结

  • 卷积操作后,输出的通道数=卷积核的个数
  • 卷积核的个数和卷积核的通道数是不同的概念。
    每层卷积核的个数在设计网络时会给出,但是卷积核的通道数不一定会给出。
    默认情况下,卷积核的通道数=输入的通道数,因为这是进行卷积操作的必要条件。

填充(padding)

简介

为了使卷积操作后能得到满意的输出图片尺寸,经常会使用padding对输入进行填充操作。默认在图片周围填充0。

全零填充padding=‘same’

  • 使用same时,会自动对原图进行全0填充,当步长为1时,可以保证输出的图片与输入的图片尺寸一致。
  • 输出尺寸计算公式:输入长/步长 (向上取整)

TensorFlow中实现:(这里以卷积核个数:48,卷积核尺寸:3,步长:1,全填充为例)

layers.Conv2D(48, kernel_size=3, strides=1, padding='same')

不填充padding=‘valid’

  • 使用valid时,不进行任何填充,直接进行卷积。
  • 输出尺寸计算公式:(输入长-核长)/步长+1 (向下取整)
    TensorFlow中实现:
layers.Conv2D(48, kernel_size=3, strides=1, padding='valid')

自定义填充

一般是从上下左右四个方向进行填充,且左、右填充的列数 P   w P~w P w一般相同,上、下填充的行数 P   h P~h P h也应该相同。
在这里插入图片描述

输出尺寸计算公式
在这里插入图片描述

在这里插入图片描述

  • 其中,h,w为原图的高和宽,k是卷积核的尺寸,s是步长。
  • 在TensorFlow2.0中,自定义填充过程中,padding参数的设置格式为:
    padding=[ [0,0],[上,下],[左,右],[0,0] ]
# 例如要在上下左右各填充一个单位,实现如下:
layers.Conv2D(48, kernel_size=3, strides=1, padding=[[0,0], [1,1], [1,1], [0,0]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值