0506   

 

卷积神经网络

 

传统神经网络与卷积神经网络的对比

 

从零开始深度学习0506——CNN基本知识

 

 

组成

Input –conv –relu – pool – FC

输入层

卷积层

**函数

池化层

全连接层

从零开始深度学习0506——CNN基本知识

卷积核 即  滤波器  也就是权重参数

32-5+1=28

卷积核的大小必须要与输入层的通道数相同  32*32*3  卷积核就是5*5*3 使用6个卷积核  得到结果就是 28*28*6  所以 第二次卷积时 卷积核就是5*5*6   使用10个卷积核  结果就是24*24*10

 

基本刚开始的卷积操作只能提取一些简单的特征,边缘,线条,等等

 

 

卷积核在输入层上进行滑动

卷积核就是w 对应 x 也是有三通道

F11从零开始深度学习0506——CNN基本知识X11从零开始深度学习0506——CNN基本知识)=W11X11从零开始深度学习0506——CNN基本知识 = 0

F12从零开始深度学习0506——CNN基本知识X12从零开始深度学习0506——CNN基本知识)=W12X12从零开始深度学习0506——CNN基本知识 = 2

F13从零开始深度学习0506——CNN基本知识X13从零开始深度学习0506——CNN基本知识)=W13X13从零开始深度学习0506——CNN基本知识 = 0

F=F11+F12从零开始深度学习0506——CNN基本知识+F13从零开始深度学习0506——CNN基本知识+b0 = 0+2+0+1=3   即提取出的第一个特征值

然后开始滑动

可以看到输入层是5*5*3,有2个卷积核,每个卷积核为3*3*3,所以卷积完可以得到如图绿色框图  3*3*2

从零开始深度学习0506——CNN基本知识

 

 

步长  stride

 

谨慎选择 不能太大不能太小

小了,特征提取更丰富,但是效率不高

大了,会漏掉某些特征点

从零开始深度学习0506——CNN基本知识

 

 

Padding

 

可以看到在卷积过程中,随着步长stride设定,最左上角的边缘点只利用了一次,但是标记的2号位置,却被利用了2次,所以为了让边缘点利用率更高,多次利用,选择在外围加一层0,使得边缘点不再是边缘点

从零开始深度学习0506——CNN基本知识

 

Pad 通常选取就是 (filter_size-1)/2   filter_size就是滑动窗口的大小,也就是卷积核的h或w

 

 

 

计算输出的shape

假设

输入(h,w) 7*7

Filter(卷积核)   3*3

Padding  1    没有设置时padding为0

Stride  1

从零开始深度学习0506——CNN基本知识

W也是一样

深度为Filter的个数

 

参数共享,权值共享

 

 

pooling层

下采样,降采样操作

也需要指定filter大小 和 步长

对卷积层提取到的特征图feature map 进行压缩,降维

Pooloing 中没有权重参数参与

从零开始深度学习0506——CNN基本知识

Mean pooling  平均池化  

Max pooling  最大池化  

从零开始深度学习0506——CNN基本知识

 

 

 

基本上每次卷积完都要加上非线性的变换 conv+relu ,也就是**函数,现在常用relu函数

从零开始深度学习0506——CNN基本知识

 

 

 

一般实际中,输入x 格式是 X[N,C,H,W]

N 就是batch 的编号

C 就是chnnal 通道

H 就是高

W 就是宽

 

python区别之[:j]和[:,j]或者双冒号[::],python冒号在数组和矩阵使用

https://blog.csdn.net/xinjieyuan/article/details/81429048

比较详细

保留第一个维度所有元素,第二维度元素保留到j”这句话不容易理解 建议换个通俗易懂的,比如: X[:,0]就是取矩阵X的所有行的第0列的元素,X[:,1] 就是取所有行的第1列的元素。 X[:,m:n]即取矩阵X的所有行中的的第m到n-1列数据,含左不含右。 X[0,:]就是取矩阵X的第0行的所有元素,X[1,:]取矩阵X的第一行的所有元素。

 

 

卷积神经网络的前向传播

从零开始深度学习0506——CNN基本知识

这里的 :3 :3  意思是从边缘开始,从0开始到3 取了3*3 的一块 进行卷积

卷积完之后,根据步长stride为2 ,可以知道,先是横向滑动了2个位置,所以(0+2):(3+2),:3即 2:5 , :3   意思就是横着从第2个位置到第5个位置,竖着因为还没开始上下滑动,所以还是从0到3   还是3*3 的卷积

Out[0,0,0]   第一个0是第一个卷积核 卷积出来的意思,就是feature map的第一个通道,也可以理解为第一个卷积出来的feature map   第二个0 第三个0 就是第一行第一列的意思

如 Out[2,0,1]   就是第三个feature map 的第一行第二列

 

反向传播原理

 

从零开始深度学习0506——CNN基本知识

 

 

Pooling的反向传播

从零开始深度学习0506——CNN基本知识

 

 

存在权重参数的地方

从零开始深度学习0506——CNN基本知识

 

 

Python3中// 和/区别

 

 " / "表示浮点数除法,返回浮点float结果;" // "表示整数除法,返回一个不大于" / "计算结果的最大整数int,特别注意如果其中一个操作数位负数,则结果必为负数。
如:

a = 5/3
b = 5//3
c = -5/3
d = -5//3
print(a,b,c,d,sep=",")

输出结果:1.6666666666666667,1,-1.6666666666666667,-2

 

相关文章: