所有图片来自PPT官网Index of /slides/2022
代码:Batch Normalization和Dropout_iwill323的博客-CSDN博客
目录
卷积层的batch norm——spatial batchnorm
全连接层存在的问题
在全连接层中,相邻层的神经元全部连接在一起,输出的数量可以任意决定。
全连接层存在什么问题呢?那就是数据的形状被“忽视”了。比如,输入数据是图像时,图像通常是高、长、通道方向上的 3 维形状。但是,向全连接层输入时,需要将 3 维数据拉平为 1 维数据。
图像是 3 维形状,这个形状中应该含有重要的空间信息。比如,空间上邻近的像素为相似的值、RBG 的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等,3 维形状中可能隐藏有值得提取的本质模式。但是,因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。
而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以 3 维数据的形式接收输入数据,并同样以 3 维数据的形式输出至下一层。因此,在 CNN 中,可以(有可能)正确理解图像等具有形状的数据。
卷积层
卷积层使用卷积核与数据中与之相同大小(包括长、宽、深)的一组数据做内积,将其映射为一个数据(神经元neuron)。这块区域就是这个neuron的感受野receptive field。这与全连接层是显然不同的,在全连接层中,每个neuron和输入都是连接的。CNN 中,有时将卷积层的输入输出数据称为特征图(feature map)。其中,卷积层的输入数据称为输入特征图(input feature map),输出数据称为输出特征图(output feature map)
卷积神经网络中卷积核的高度和宽度通常为奇数,例如1、3、5或7。 选择奇数的好处是,保持空间维度的同时,我们可以在顶部和底部填充相同数量的行,在左侧和右侧填充相同数量的列。
此外,使用奇数的核大小和填充大小也提供了书写上的便利。对于任何二维张量X
,当满足:
- 卷积核的大小是奇数;
- 所有边的填充行数和列数相同;
- 输出与输入具有相同高度和宽度
则可以得出:输出Y[i, j]
是通过以输入X[i, j]
为中心,与卷积核进行互相关计算得到的。
同一层的neuron共享一个卷积核,这样就大大减少了参数的数量。有时候共享参数是不合适的,具体参考官方笔记CS231n Convolutional Neural Networks for Visual Recognition
假设卷积核的尺寸保持为K×K,那么每经过一层卷积,一个neuron看到的感受野要加K-1,图片的信息就被不断压缩(提取)
可以使用多个卷积核,这样就能在一个卷积层上提取多个特征。注意每个卷积核的深度永远和数据深度相同;每个卷积核共享一个bias
卷积核学到了什么
线性分类器对每一个分类学到了一个template,神经网络学到的template更为丰富
第一层卷积核学到的是最基本的特征,比如图像边缘。随着深度增加,每一层卷积层对上一层做综合,学习到更为复杂的特征(这一段是看图说话)
超参数
卷积核尺寸、滑动步长、padding、卷积核数量
1×1卷积层
1×1卷积层是有用的,主要用于降低通道数量,进而降低参数数量
pytorch
pytorch的Conv2d函数,常数输入参数是这四个超参数(外加一个输入参数的通道)。输入输出如下:
池化层
常用的是max pooling
全连接层
在卷积神经网络的最后往往跟一个全连接层,用于将学习到的特征映射到不同的分类
演示网站http://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html