DL(2) -卷积神经网络(CNN)


基本概念

  • 处理图像分类问题,而诞生的具有一系类特殊操作的神经网络。
  • 普通神经网络即由多层(N个神经元)构成。对于图像来说,如果采用普通神经网络将会面临模型参数量巨大的问题。大量的参数会增加巨大训练需求,也容易造成过拟合。同样,过多参数容易使神经网络模型收敛到一个较差的局部极值。
    Eg: 对于一副图像,假设大小 1000 ∗ 1000 1000 * 1000 10001000,每一个像素点都是输入。使用普通神经网络,假设有100个神经元,则会产生: 1000 ∗ 1000 ∗ 100 + 100 ≈ 1 0 8 1000 * 1000 * 100 + 100 \approx 10^8 10001000100+100108 个参数。
    在这里插入图片描述
  • 卷积神经网络的解决办法是采用两种策略:
    1.局部连接: 图像具有很强的区域性,某一部分与其周围的像素具有较强的相关性,特征具有相似性,比如:额头、脖子等。因此可以将图像分区域连入不同的神经元,例如每个神经元仅与图像中 10 ∗ 10 10*10 1010的局部图像相连接,则参数量为: 10 ∗ 10 ∗ 100 + 100 ≈ 1 0 4 10*10*100+100 \approx 10^4 1010100+100104
    在这里插入图片描述
    2.参数共享: 从一整副图像来看,其整体的特征与所有区域相关,例如:人脸图像,每个区域虽有差异但都是脸的一部份,都表示脸。因此所有区域特征又可看成是相似的,所有神经元参数共用,则参数量为: 10 ∗ 10 + 1 = 21 10*10+1 = 21 1010+1=21
  • 局部连接和参数共享就构成卷积核(本质就是参数量固定的单个神经元),成为卷积的基本操作,大降低参数量。

基本结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 卷积层
  1. 卷积层的核心即卷积核(参数量固定的单个神经元),通常表示为 N ∗ N N*N NN的矩阵,在图像上从上到下,从左到右对图像进行计算,得到卷积特征。例如: 3 ∗ 3 3*3 33卷积核。
    在这里插入图片描述
    在这里插入图片描述
  2. 当然卷积核移动的步长可以任意,步长为2,如下图:
    在这里插入图片描述
  3. 此外通过卷积会使图象变小,为了使图象大小不变可以在原图周围添加padding层(通常值为0),添加几层padding需根据卷积核的大小判断。
  4. 对于多通道输入,不同通道使用卷积核不同,参数不共享,bias共享同一个,但最终的卷积结果为所有通道的和。
    在这里插入图片描述
    在这里插入图片描述
    若要输出多种结果即多通道,就要使用多组卷结核,这些卷积核之间参数也不共享。
    在这里插入图片描述
  5. 输出大小:输入图像大小 N ∗ N N*N NN,卷积核大小 m ∗ m m*m mm,步长为s,padding为p。公式: ( N − m + 2 p ) / s + 1 (N - m + 2p)/s +1 (Nm+2p)/s+1
  6. 参数数目: 卷积核大小 m ∗ m m*m mm,输入图像通道數Ci,输出通道数Co。公式: C i ∗ m ∗ m ∗ C o Ci * m * m * Co CimmCo

  • 池化层
  1. 通常有两种池化处理方式(max和average),对于边缘池化核无法覆盖到的,直接选择丢去或者使用padding层扩充。
    在这里插入图片描述
    在这里插入图片描述
  2. 池化核大小通常为2*2、步长为2、不重叠、不补零(边缘未覆盖的就舍去)。用于减少图象尺寸,从而减少计算量。同时也对图像进行特征整合、降低冗余,但也一定程度上损失精度。

  • 全连接层
  1. 就是普通的神经网络层。卷积层的输出展开之后连入全连接层的每一个神经元上。
  2. 全连接层后不会再有卷积层和池化层。
  3. 为什么卷积神经网络,在卷积层后面还会加上全连接层呢?
    卷积层中的卷积单元是局部视野,它就像我们的眼睛将整个图片每一部分的都特征提取出来。全连接层就像我们的大脑,将卷积层提取的特征结合展开,进行整合处理,做出最后的决策。用机器学习的术语来说:卷积层为“特征提取器”,全连接层为“决策分类器”。

Keras API

参数名含义
filters卷积核个数
kernel_size卷积核大小,需根据数据维度
strides步长
padding“valid” or “same”,默认=“valid”,same即需要padding,保持输出大小一致
activation激活函数
data_format输入数据的形状,默认="channels_last ",(batch, height, width, channels)
use_biasboolean ,是否使用b(偏移量)
kernel_initializer参数w的初始化方式
bias_initializer偏移量b的初始化方式
input_shapae2-D数据 (batch, height, width, channels)
参数名含义
pool_size池化核大小,默认=(2,2)
strides步长,默认=2
padding“valid” or “same”,默认 = ‘valid’
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值