Nesterov加速梯度(Nesterov's Accelerated Gradient,简称NAG)是梯度下降的一种优化方法,其收敛速度比动量更新方法更快,收敛曲线更加稳定

阅读全文 »

动量(momentum)更新是梯度下降的一种优化方法,它能够加快损失函数收敛速度(converge rate

阅读全文 »

在标准随机梯度下降过程中,每次更新使用固定学习率(learning rate),迭代一定次数后损失值不再下降,一种解释是因为权重在最优点周围打转,如果能够在迭代过程中减小学习率,就能够更加接近最优点,实现更高的检测精度

学习率退火(annealing the learning rate)属于优化策略的一种,有3种方式实现学习率随时间下降

  1. 随步数衰减(step decay
  2. 指数衰减(exponential decay
  3. 1/t衰减(1/t decay

下面介绍这3种学习率退火实现,然后用numpy编程进行验证

阅读全文 »

之前实现了一个图像和行向量相互转换的函数,逐图像进行局部连接矩阵的转换

其实现原理较下标计算更易理解,通过循环,逐个图像对局部连接矩阵进行切片操作,得到矩阵后拉平为向量,以行向量方式进行保存

反向转换图像可以设置标志位isstinct,是否返回叠加图像还是原图,其实现原理是在指定位置赋值过程中是执行累加还是执行覆盖

阅读全文 »

前面实现了图像转列向量,在之前推导过程中使用的是行向量,所以修改im2col.py,实现im2row的功能

卷积核大小为\(2\times 2\),步长为1,零填充为0

  • field_height = 2
  • field_width = 2
  • stride = 1
  • padding = 0

2维图像大小为\(3\times 3\),3维图像大小为\(2\times 3\times 3\),4维图像大小为\(2\times 2\times 3\times 3\)

所以输出数据体的空间尺寸为\(2\times 2\),深度为2,数量为2

  • out_height = 2
  • out_width = 2
  • depth = 2
  • N = 2
阅读全文 »

im2col表示image to column,将图像转换成列向量

卷积操作步骤:首先将卷积核映射到x_padded左上角,然后沿着行方向操作,每次滑动stride距离;到达最右端后,将卷积核往列方向滑动stride距离,再实现从左到右的滑动

阅读全文 »

cs231n课程Convolutional Neural Networks: Architectures, Convolution / Pooling Layers中提到使用矩阵乘法方式完成卷积层及池化层操作,同时在Assignment #2: Fully-Connected Nets, Batch Normalization, Dropout, Convolutional Nets中给出了一个卷积层转全连接层的实现 - im2col.py

im2col表示将滤波器局部连接矩阵向量化为列向量(column vector),在行方向进行堆叠,最终得到2-D矩阵

im2col.py使用 花式下标求解 的方式,让我觉得应该写篇文章好好学习一下

本文介绍一些numpy实现,下一篇介绍im2col实现,第三篇实现im2row,第四篇介绍另一种实现图像和行向量互换的方式,最后实现池化层图像和行向量的互换pool2row

  1. 数组扩展
  2. 数组变形
  3. 数组填充
  4. 维数转换
  5. 矩阵提取
  6. 数据叠加
阅读全文 »