性能优化
SGD问题:病态曲率问题。 采用动量法:
自适应梯度算法:具有较大偏导的参数相应有一个较大的学习率,而具有小偏导的参数则对应一个较小的学习率;即每个参数的学 习率会缩放各参数反比于其历史梯度平方值总和的平方根。
AdaGrad问题:学习率是单调递减的,训练后期学习率过小会导致训练困难, 甚至提前结束,所以需要设置一个全局的初始学习率。
采用RMSProp算法:使用指数衰减平均法,加入超参数控制衰减速率。
Adam算法进一步改进了RMSProp算法:除了加入历史梯度平方的指数衰减平均(𝑟)外,还保留了历史梯度的指数衰减平均(𝑠),相当于动量。
卷积与图像滤波
图像(二维)卷积定义:
*即图像矩阵与卷积核矩阵对应位置相乘再相加。
具体计算过程实例:
卷积计算过程直观体验:Image Kernels explained visually
填充(Padding):也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0或者复制边界像素来进行填充。
一些简单的滤波方法:平均滤波,加权平均滤波。
图像边缘检测:
- Prewitt算子卷积核 以及
- Sobel算子卷积核(x方向);(y方向)
- LoG算子
- Canny算子
四种方法对比:
卷积神经网络基础
pytorch学习资源:
- 60分钟快速入门:jianshu.com/p/889dbc684622
- 官方教程:PyTorch官方教程中文版
- 动手学深度学习:https://zh-v2.d2l.ai/
- Deep learning with pytorch:Oops! | PyTorch
基本概念:
- 使用 tensor 表示数据
- 使用 Dataset、DataLoader 读取样本数据和标签
- 使用变量 (Variable) 存储神经网络权值等参数
- 使用计算图 (computational graph) 来表示计算任务
- 在代码运行过程中同时执行计算图
池化思想:使用局部统计特征,如均值或最大值,解决特征过多问题。
卷积神经网络结构:由多个卷积层和下采样层构成,后面可连接全连接网络。 k 个滤波器构成卷积层,采用mean或max构成下采样层。
LeNet-5网络
- 6个Feature map构成
- 每个神经元对输入进行5*5卷积
- 每个神经元对应5*5+1个参数,共6个feature map,28*28个神经元,因此共有(5*5+1)*6*(28*28)=122,304连接