美文网首页
5.卷积神经网络

5.卷积神经网络

作者: 路小漫 | 来源:发表于2018-03-07 11:02 被阅读0次

卷积神经网络的历史

卷积和池化

全连接层

全连接层
  • 32x32x3的图像输入,将所有像素展开的得到3072x1的向量
  • 把向量和权重相乘,假设权重10个
  • 得到这一层的输出,一个数字,一共是10个输出值

卷积层

图片.png
  • 与全连接的区别是“保全空间结构”
  • 输入不变还是32x32x3的图像输入
  • 替换权重为卷积核,5x5x3的filter
  • 将这个卷积核滑过图像的每个位置,计算出每个空间定位时的点积结果

详细介绍卷积过程

  • 卷积核总是会将输入量扩展至完全,所以总是一小块空间区域,通常会遍历所有通道。在这采用5x5x3的大小
  • 在卷积核和给定图像空间进行点积运算,将卷积核的所有值与图片区域对应的值相乘求和(即点积)再加上偏移值
卷积运算
  • 从左上角开始遍历输入图像的所有像素点,每个位置都进行点积,得到一个激活输出
  • 滑动的步长,影响输出的大小
滑动卷积核
  • 我们可以使用多个卷积核,用来处理不同的模式或概念
  • 六个卷积核会得到6层的激活映射,28x28x6
多个卷积核
例子
  • 卷积的结果使用ReLU这样的激活函数进行处理
  • 或者经过池化层
卷积层的应用

小结

  • 我们一般使用多个卷积核(filter)对输入进行处理,每个卷积核得到一个激活映射,叠加成一个卷积网络(ConvNet),就完成了对这几个卷积核的学习
  • 前几层的卷积核一般代表了一些低阶的图像特征,例如:边界
  • 而中间层可以得到更加复杂的图像特征,例如:边角、斑点等
  • 高层可以获得比中间层更加丰富的内容
level
  • 一个图片输入
  • 让它通过好多层
  • 先是卷积层(conv),然后通常是非线性层(relu),有了卷积层和非线性层以后会用到池化层(pool)
  • 得到输出后,利用全连接层,连接所有卷积输出,并用其获得一个最终的分支函数
卷积神经网络整体看起来是这样的

例子

  • 在这个例子中,我们是如何得到28x28x1的激活映射的呢?
前面的例子
  • 下面是一个简化的例子,每次移动一个像素格,得到5x5的输出:
1
2
3
4
5
  • 每次移动两个像素格,得到3x3的输出:
1
2
3
  • 如果一次移动3个像素格呢?
不可行
  • 输出大小的计算:
计算输出
  • 零填补边界后
零填补
  • 为什么做零填补?
  • 答:保持输出和之前输入大小相同
  • 通常卷积核的大小是:3x3,5x5,7x7
  • 与之对应零填补的大小:1,2,3
思考
  • 如果不进行零填补,经过几个卷积层后,激活映射会快速减小,这是不合适的

计算练习

计算输出大小
参数个数计算

总结

总结

1x1的卷积层

  • 我们也可以做1x1的卷积层,这也是有意义的,相当于在每个深度上计算
1x1

卷积层在深度学习框架中的使用

Torch
Caffe

视觉之外的卷积神经网络

图片.png 图片.png
  • 5x5的卷积核代表神经学的5x5的感受野
图片.png
  • 与全链接层对比,全链接层是所有像素与输出联系,而卷积是输入的局部区域与输出联系
对比

池化层的作用

图片.png
  • 降采样
  • 减少参数的数量
  • 池化不改变深度
  • 一般使用最大池化实现
  • 步长的设定,区域不产生重叠
图片.png

池化层总结

  • 接收一个卷积层输入W1×H1×D1
  • 需要两个超参数,
    • filter(过滤器):F
    • stride(步长):S
  • 产生一个W2×H2×D2的卷积
    • W2=(W1-F)/S+1
    • H2=(H1-F)/S+1
    • D2=D1
  • 没有引入超参数,因为它计算是对输入的一个计算
  • 池化层一般不进行零填补
图片.png

全链接层的作用

  • 把所有的信息聚合到一起

一个模拟程序

  • 可以在这个模拟程序中模拟卷积神经网络
模拟程序

相关文章

网友评论

      本文标题:5.卷积神经网络

      本文链接:https://www.haomeiwen.com/subject/weelfftx.html