笔记:CNN基础原理
2018-03-06 13:43
323 查看
什么是卷积
卷积是通过俩个函数生成第三个函数的一种数学算子。对于图像,通过filter与原图像矩阵的生成基于filter的图像特征矩阵。对于64*64大小的图像,如果图像使用R,G,B三通道存储,那么我们的输入图像矩阵为(64, 64, 3),每个元素的值由0到255。如果这时我们使用卷积核filter大小为(3, 3)的二维矩阵来提取图像的某一个特征F,那么得到的就是基于该特征F的图像特征矩阵。所得到的矩阵为二维矩阵,大小取决于filter的大小,图像的padding处理,filter移动的步长(stride)。即我们获得的二维特征矩阵的大小为
这时我们得到关于一个特征F的特征矩阵,那么我可能需要提取多个特征,这就要用到多个不同的filter。例如
⎡⎣⎢⎢⎢111110101010−10−10−10−10−1−1−1−1⎤⎦⎥⎥⎥(filter1)(filter1)[110−10−1110−10−1110−10−1110−10−1]
filter1用于提取垂直特征,如果该图像在某个filter大小的区域内有垂直的明显差异,例如一条竖线,那么在该区域获得特征值就与其他无明显差异的值较大。
⎡⎣⎢⎢⎢11−1−11010−10−101010−10−1011−1−1⎤⎦⎥⎥⎥(filter2)(filter2)[110101110101−1−10−10−1−1−10−10−1]
filter2用于提取水平特征。
还有很多filter用来提取特征,然后我们将每个filter提取的二维特征矩阵合围一个3为特征矩阵,即(w_output, h_output, n_filter)然后将这个矩阵作为下一层的输入。
池化(pooling)
池化是对我们获取的特征矩阵进行进一步的优化,使得减少过拟合(over-fitting)现象,在有些网络中,将池化层与卷积层合为一层。平均池化(average pooling)
顾名思义,平均池化即是通过filter获取我们获得特征的平均值,其输出大小与卷积层算法相同,一般我们使用same padding,通过添加padding的方式来使得pooling layer 的输出与 cnn layer 的输出维度相同。
average pooling 在之前非常常用,但目前常用的是max pooling
最大池化(max pooling)
最大池化即获取特征的最大值,但这会导致数据丢失,导致欠拟合现象。但确实目前池化层常用的方法。
全连接层(full-connected layer, FC)
全连接层用于将我们提取到的特征矩阵转化为一维矩阵,将特征进行映射,便于我们进一步提取特征值,最后我们可以通过sigmoid(二元分类),softmax(多元分类)作为输出层函数,获取我们需要的结果。但由于FC会占据全部网络很大的占比,一些如ResNet使用了全局平均池化。
对于有错误的地方还请纠正,以上内容结合Adrew Ng的深度学习和相关blog的内容结合总结。
相关文章推荐
- 卷积神经网络(CNN)学习笔记1:基础入门
- Java基础知识强化之网络编程笔记02:Socket通信原理图解
- 【华为网赛学习笔记第二日】【01】服务器操作系统基础原理(下)
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
- unity3D学习之音频基础原理-audio菜鸟笔记3
- Android基础笔记(十三)- 内容提供者原理和简单使用
- 【黑客免杀攻防】读书笔记1 - 初级免杀基础理论(反病毒软件特征码提取介绍、免杀原理、壳)
- CNN学习笔记(一)卷积神经网络基础知识
- 卷积神经网络(CNN)学习笔记1:基础入门
- 003云数据中心基础原理笔记
- 【华为网赛学习笔记第二日】【01】服务器操作系统基础原理(上)
- jdk的配置和JVM内部原理 java 基础学习笔记 第一天
- 融合式基础架构--《VMware网络技术原理与实践》笔记
- 零基础深度学习笔记6——Keras-CNN-MNIST 手写数字辨识资料集
- 静态路由基础-路由交换原理10-【HCNA笔记】
- Ajax学习笔记-基础原理
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-01-CNN基础知识点
- 网络原理笔记2-数据通讯基础
- 卷积神经网络(CNN)学习笔记1:基础入门
- 【华为网赛学习笔记第二日】【01】服务器操作系统基础原理(中)