ConvolutionalNetworks

原理与总结

卷积过程就是利用卷积核在原始图像或者特征图上进行卷积操作,卷积核的个数决定了最终卷积获得的特征层层数

作业实现

conv_forward_navie

这个函数通过四个for循环,首先在每一张图像上的每一个像素执行不同卷积核的卷积操作。在卷积之前还需要进行原图的padding

测试结果:

Aside: Image processing via convolutions

该模块通过指定卷积核的数值,实现边缘提取

测试结果:

Naive backward pass

反向传播

测试结果:

Maxpooling:Naive forward

最大池化的前向传播

测试结果:

Maxpooling:Naive backward

最大池化的反向传播,不需要进行参数的梯度更新

测试结果:

Fast layers

提供了一种快速卷积计算的方法

测试结果:

可以看出卷积的速度提升极大,池化的速度提升较小

Convolutional “sandwich” layers

测试结果:

Three-layer ConvNet

  1. sanity check loss

    可以看出加上正则化后,loss会与ln(10)有所偏差

  2. Gradient check

  1. Overfit small data

    实现代码:

测试结果:

  1. Train the net

    实现代码:

    测试结果:

  2. Visualize Filters

Spatial Batch Normalization

​ 空间批归一化,与Batchnorm十分相似,只需要将通道C与H互换即可

  1. 前向传播

    测试结果:

  2. 反向传播

    测试结果: