深度学习笔记(24) 卷积层
1. 卷积层向前传播
一个典型的卷积神经网络的卷积层,而通常有三层:
- 卷积层 Conv
- 池化层 POOL
- 全连接层 FC
首先介绍的是卷积层Conv,从Conv的向前传播开始
前向传播中一个操作就是 z[1] = W[1]a[0]+b[1],其中 a[0]=x
执行非线性函数得到 a[1] ,即 a[1] =g(z[1])
这里的输入是a[0] ,也就是x,这些过滤器用变量 W[1] 表示
在卷积过程中,对这27个数(3 * 3 * 3)进行操作
其实是27×2,因为用了两个过滤器,取这些数做乘法
实际执行了一个线性函数,输出结果是一个4×4的矩阵
它的作用类似于W[1] a[0],也就是两个4×4矩阵加上偏差
a[0] 到a[1] 的演变过程:
首先执行线性函数,然后所有元素相乘做卷积
运用线性函数再加上偏差,应用激活函数ReLU
这样就通过神经网络的一层把一个6×6×3的维度a[0] 演化为一个4×4×2维度的a[1]
这就是卷积神经网络的一层
示例中有两个过滤器,也就是有两个特征
因此最终得到一个4×4×2的输出
但如果用了10个过滤器
最后会得到一个4×4×10维度的输出图像
因为选取了其中10个特征映射,也就是a[1]
现在有10个过滤器,每一层都是一个3×3×3的矩阵
因此每个过滤器有27个参数,然后加上一个偏差,用参数b表示
现在参数增加到28个,现在有10个,加在一起是28×10,也就是280个参数
不论输入图片有多大,1000×1000也好,5000×5000也好
参数保持不变,始终都是280个
即使这些图片很大,参数却很少
这就是卷积神经网络的一个特征,称为 “避免过拟合”
2. 卷积层符号
这一层是卷积层
3. 简单的卷积网络
假设有一张图片,想做图片分类或图片识别,把这张图片输入定义为x
然后辨别图片中有没有猫,用0或1表示,这是一个分类问题
用了一张比较小的图片,大小是 39×39×3,即 nH[0] = nW[0] = 39
而 nc[0] = 3,即 0层的通道数为3
假设第一层用一个3×3的过滤器来提取特征
那么
f f
f [1]=3,因为过滤器时3×3的矩阵,
s s
s [1]=1,
p p
p [1]=0
所以高度和宽度使用 valid 卷积
如果有 nc[1]=10,10个过滤器
则 (n+2p-f)/s+1=(39+0-3)/1+1=37
神经网络下一层的激活值为 37×37×10,即 nH[1] = nW[1] = 37
而nc[1] = 10
假设设还有另外一个卷积层,这次采用的过滤器是5×5的矩阵
神经网络下一层的
f f
f = 5,即
f f
f [2] = 5
步幅为2,即
s s
s [2] = 2
padding为0,即
p p
p [2] = 0
且有20个过滤器
所以其输出结果会是一张新图像,这次的输出结果为 17×17×20
即激活值 a[2] 的维度
因此 nH[2] = nW[2] = 17,nc[2] = 20
构建最后一个卷积层,假设过滤器还是5×5,步幅为2
即
f f
f [2] = 5,
s s
s [3] = 2
使用了40个过滤器,padding为0,最后结果为 7×7×40
到此,这张39×39×3的输入图像就处理完毕了
为图片提取了7×7×40个特征,即1960个特征
这样简单的卷积神经网络的卷积层就完成了
然后对该卷积进行全连接处理
可以将其平滑或展开成1960个单元,输出一个向量
其填充内容是logistic回归单元还是softmax回归单元
完全取决于是想识图片上有没有猫,还是想识别K种不同对象中的一种
用
y ^ \hat{y}
y^ 表示最终神经网络的预测输出
参考:
相关推荐:
深度学习笔记(23) 卷积维度
深度学习笔记(22) Padding
深度学习笔记(21) 边缘检测
深度学习笔记(20) 端到端学习
深度学习笔记(19) 多任务学习
谢谢!