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
-
sanity check loss
可以看出加上正则化后,loss会与ln(10)有所偏差
-
Gradient check
-
Overfit small data
实现代码:
测试结果:
-
Train the net
实现代码:
测试结果:
-
Visualize Filters
Spatial Batch Normalization
空间批归一化,与Batchnorm十分相似,只需要将通道C与H互换即可
-
前向传播
测试结果:
-
反向传播
测试结果: