一、导入:图片分类
输入:一样尺寸的图像

1. 机器识别图像原理
怎样输入一张图片呢
- 对于机器来说,一张图片是3维的
tensor(tensor是维度>2的矩阵) - 3维分别是长宽(这张图片的Pixel(像素)数目)和
channel(R G B三种颜色) - 所以一张图片就是100x100x3个数值组成的,把他们拉成一排,组成一个向量。
- 向量里面每一维就是某个像素某个颜色的强度

2. 全连接网络问题 —overfitting
每一个神经元都要都要看完整的图片,如果有1000个Neuron,第一层的weight有3x10^7,非常大
但是过多的参数,模型弹性过大—模型可选择的函数多—函数较为复杂—容易过拟合

3. 简化方法
(1) 感受野
一个神经元只需要局部信息就可以确定图片类型
下图识别鸟只需要将其各个pattern给各个神经元

确定一个receptive field(感受野)作为一个神经元的输入,再将其结果作为下一个神经元的输入

特点
- Receptive Field之间可以重叠
- 两个不同的神经元可以守备同一个receptive field
- 一个神经元可以不全考虑3个channel
- receptive field可以不是正方形

一般设定方式
- 考虑它所有的channels(3)
- 只讲高和宽
kernel size(图中eg:3x3)- 一个感受野可以有多个神经元守备
stride(步幅)通常设为1或2- 移动到旁边没有足够的值了,需要
padding(补值)一般为0- 最终感受野会覆盖整个图片

(2)参数共享
同一个pattern可能出现在图片的不同感受野,而不同感受野的神经元的作用是一样的
在每个范围都放一个侦测鸟嘴的Neuron,会导致参数太多了

在不同的receptive filed共享参数
这两个Neuron的weight是完全一样的,但他们的输入是不一样的,输出也不一样

比如:
两个感受野都由64个Neuron来守护
两个感受野里面的Neuron一一对应来共用一组参数,这组参数叫做filter i

引出卷积层

(3)pooling(池化)- Max pooling
作用:pooling做的事情就是把图片变小,减少计算量
- Pooling是可有可无的
每个filter扫过图片后会产生一组数字
将这组数字分组,再在每个组里面选择最大值作为代表(最大池化)

可能卷积几次中穿插一次池化

二、卷积层是什么
第二种方式引出CNN的方式
什么叫做Convolutional Layer(卷积层)呢
里面有很多的Filter(滤波器/卷积核)
Filter来抓取图片里的一个pattern

每一个Filter都进行滑动卷积,stride设为1

一个Filter能得到一组数字,64个就能得到64组数字,组成Feature map Feature
map就可以看成是另外一张新的图片,有64个channel

如果要将第一层的结果“图片”当作第二层的输入
第二层Convolution的Filter高度也等于64(相当于channel数)
两种方式比较而言
前者里面Neuron共用的参数其实就是后者里面的Filter

权值共享其实就是将Filter扫过一张图片(
convolution)
其实就是不同感受野的神经元可以共享一个Filter

二、CNN架构
Flatten是将矩阵拉直成向量
再传入全连接神经网络里面

782

被折叠的 条评论
为什么被折叠?



