卷积神经网络
计算机视觉
计算机视觉问题例如图像识别,图像融合,物体检测等
cat的图片 64 * 64 * 3
这样的图片比较小,如果对于1000 * 1000 * 3,使用神经网络
- 第一层的输入,展开X_1,X_2…X_N,一共有1000 * 1000 * 3个x
- 第一层的输出,1000个节点
- 第一层的参数
边界检测
这里数字越大代表亮度越大,数字越小越暗
- 输入为 6 * 6的矩阵
- 过滤器 3 * 3 或者 kernel
- 输出 4 * 4
更多的边界检测
对于过滤器有不同的值,不同进行边界检测
Padding
边界扩充,输入的矩阵经过过滤器过滤之后,输出的矩阵维度降低,为了使矩阵维度保持不变,我们可以对原来的矩阵边界进行填充数值。
- 输入矩阵: n * n eg: 6 * 6
- 填充边界: pading P=1
- 过滤器: f * f eg: 3 *3
- 输出矩阵: ( n+2P-f+1 ) * ( n+2P-f+1 )
- 输出矩阵: 6+2-3+1 =6
两种卷积方式
- valid: 无填充
- Same:Pad so that output size is the same as the input size.
卷积步长
Strided Convolutions
图片维度 : n × n
过滤器维度: f × f
填充 Padding : p
步长stride : s
三维卷积
(Convolutions over volumes)
把三维过滤器看成小方块
然后在三维矩阵上移动 与对应的平面进行相乘相加
这里27个相乘 最后加在一起
单层卷积网络
One layer of a convolutional network
- 输入a_{0}为 6 × 6 × 3
- 过滤器相当于参数矩阵w_{1}
- z_{1}=w_{1}a_{0}+b_{1}
- a_{1}=g(z_{1}) 使用非线性函数Relu
- g代表非线性变换
- 两个过滤器 所以最后 4 × 4 × 2
If you have 10 filters that are 3 x 3 x 3 in one layer of a neural network, how many parameters does that layer have?
如果你在一个神经网络的一层中有10个3x3x3的过滤器,那么这个层有多少参数?
3 × 3 × 3 ×10+bias( 10 )=280 parameters
简单卷积网络案例
A simple convolution network example
第一层输出结果
第二层输出结果 第三层输出结果
7 × 7 × 40=1960个特征
经过逻辑回归,输出最后的y值
卷积网络中一层的类型:
- Convolution CONV 卷积
- Pooling POOL 池化
- Fully connected FC 全连接
池化层
Pooling layer:Max pooling
这里 f=2 s=2
移动选取框中的最大值
Hyperparameters:
- f : filter size
- s : stride
- Max or average pooling
卷积神经网络的示例
Convolutional neural network example
注意:这里 CONV + POOL算一层,因为池化不需要求得参数
手写数字图片→ layer_1(Conv1 PooL1) →layer_2(CONV2 POOL2) → Fc3 →FC4→softmax →10 outputs
各层所需要的参数
可能不对: layer_1(Conv1 PooL1):5 × 5 × 3 × 6 +bias (6)
…
全连接层FC3: input 400 output 120
- 每个input都参与各个output的生成
- 参数:1 * 120 * 400+bias( 1 )
Why convolutions?
直接全连接需要的求的参数太多
|