CNN卷积神经网络笔记

适合学习的卷积神经网络(Convolutional Neural Networks)入门:
http://cs231n.github.io/convolutional-networks/#overview
非常简单清晰的直观理解:https://www.cnblogs.com/charlotte77/p/7783261.html
意义:https://blog.csdn.net/zouxy09/article/details/8781543#commentBox
建议多看一下吴恩达的深度学习入门:https://www.bilibili.com/video/av49445369/?p=174

在这里插入图片描述

  • 数据输入层:对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等
  • CONV:卷积计算层,线性乘积 求和。
  • RELU:激励层。ReLU是激活函数的一种。
  • POOL:池化层,简言之,即取区域平均或最大。
  • FC:全连接层。将神经网络的特征映射为标签,再softmax归一化。总结之前得到的特征图,做出对比,得到结果。

CNN本质是:通过感受野和权值共享减少了神经网络需要训练的参数的个数
需要训练的是:卷积核(滤波器)
BP算法→随机初始化给卷积核赋值,对输入进行判断,得到的输出和实际的输出对比,梯度下降减少误差。
特征:一个简单的图可以通过用64种正交的edges(可以理解成正交的基本结构)来线性表示,而其他基本edge没有贡献,因此均为0 。
而对于复杂的图,简单的图就是它们的“edges”,简单的图构成复杂的图。层层递推。所以是Deep learning或者Unsupervised Feature Learning


卷积:

对输入的图像(要求每一个维度)和规定的滤波矩阵(一组固定的权重矩阵,但是和输入的图像要求维度相同)依次做内积(逐个元素相乘再求和)的操作就是所谓的卷积操作,也是卷积神经网络的名字来源。 作用是使原信号特征增强,并且降低噪音。

滤波器(filter,又叫卷积核):一个权重矩阵。一个滤波器能够提取一种特征,因此这个滤波器本身就是一种特征,卷积之后其实是体现和这个特征匹配有多好的结果。
Feature Map:卷积之后的得到的一个特征层。一个滤波器对应一个特征图,反映了一个输入对这个特征的匹配程度。
卷积核的深度与当前图像的深度(feature map的张数)相同,所以指定卷积核时,只需指定其长和宽 两个参数。

处理过程:对局部输入数据进行卷积计算。每计算完一个数据窗口内的局部数据后,数据窗口不断平移滑动,直到计算完所有数据。这个过程中,有这么几个参数:
  a. 深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数。和不同滤波器卷积得到的结果放在不同的矩阵中。
  b. 步长stride:决定滑动多少步可以到边缘。
  c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑到末尾位置,通俗地讲就是为了总长能被步长整除,或者保证卷积后维度不变。

卷积的平移不变原理就是→滑动窗口捕捉特征。

tips:每次卷积的过程,是在立方体上卷积输出,输入图像的channel和滤波器的depth一样的。所以每次得到的输出是一个滤波器一个输出,而不是一个维度一个输出。
本层的输出的通道数就是本层的滤波器个数,与上一层无关。
并且如果你想得到的特征只与一个channel有关,对应的别的depth里面的参数可以是0.
深度学习就是通过调整滤波器的长款数量和值来决定的。
吴恩达深度学习
一个很重要的参数表
在这里插入图片描述

非线性激活层:f(x)=max(0,x)。保留大于等于0的值,其余所有小于0的数值直接改写为0。

池化层(pooling,也叫上\下采样层) 最大的目标就是减少数据量。
max pooling(最大池化): 最大池化保留了每一个小块内的最大值,所以它相当于保留了这一块最佳匹配结果(因为值越接近1表示匹配越好)。这也就意味着它不会具体关注窗口内到底是哪一个地方匹配了,而只关注是不是有某个地方匹配上了.

卷积的操作→只有滤波器和输入的图像连接起来了
全连接→上一层和下一层的全部节点连起来了。其中上一层是把feature map拍扁成一个N*1的层(N是上一层的全部参数数量),下一层是自己规定的输出神经元,也就是个数是根据实际情况和经验定的。

全连接层:全连接层中的每个神经元与其前一层的所有神经元进行全连接。
全连接层的输出被传递给下一个输入,采用softmax逻辑回归(softmax regression)进行 分 类,该层也可 称为 softmax层(softmax layer)
在这里插入图片描述

一个判断是不是全连接的结论

  1. fully connected没有weights share。
  2. 对于neuron的连接(点对点的连接)都是fully connected.(MLP)
  3. Convolution中当filter size等于input size时,就是fully connected,此时的output size为1x1xN。
  4. 当1x1不等于input size的时候,1x1一样具备weights share的能力。

原文:https://blog.csdn.net/qq_20259459/article/details/70598929

最后softmax层:输出最后的结果,需要几个神经元输出根据需求来定。比如手写数字识别就是十个数字,最后softmax输出的神经元是十个。
在这里插入图片描述
在卷积层,参数个数是(5*5+1)8。每个滤波器加一个偏置,然后有8个滤波器。
在全连接层,参数个数是120
400+1。

池化层只能降低width和height,但是不能如果通道数过多的话,就可以通过用1*1的滤波器来降低channel数量**,降低计算成本**。
在这里插入图片描述

目标定位:用数字告诉你这个东西在哪儿
bx,by, bh, bw→边框的位置
pc→场景中有没有这个物体
c1, c2, c3→具体分类,1为是这个物体。
差错函数:实际与判断的相差了多远。
在这里插入图片描述

一个调参的感受的网站:http://neuralnetworksanddeeplearning.com/chap4.html

发布了38 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41337100/article/details/89444768