andrewng-depp-learning课程笔记-卷积神经网络

less than 1 minute read

Published:

andrewng-depp-learning课程笔记-卷积神经网络

AndrewNg-depp learning课程笔记-卷积神经网络

edge detection

Alt text
tf.nn.conv2d

Alt text

Alt text
用bp直接得到的值,不需要手工设置filter/kernal

padding

如果直接使用卷积核,原本n*n的矩阵,经过f*f 的卷积核,结果是()n-f+1)*(n-f+1),很多层以后会变成很小的矩阵
边界的点使用到的次数比中间的点少。会丢失大量的信息。
方法:将矩阵扩大。在周围加上一圈全为0的数。padding 为1时,变成(n+2)*(n+2)
padding 为p,卷积后的矩阵为(n+2p-f+1)*(n+2p-f+1)

Alt text
f一般是奇数
stride convolution:
卷积的时候不是一步一步走,而是跳着计算

Alt text

如果不能整除stride,用floor 代替.

当输入为n*n*3的时,可以使用f*f*3的filter,卷积后变成n-f+1*n-f+1*1
可以在同一层中同时使用多个filter。

Alt text

Alt text

Alt text

Alt text
每层的长和宽会逐渐减小,但是每层的channel的数量会逐渐增加

pooling layer:
max pooling 使用的更多,通常不使用padding
pooling层的参数不需要学习,pooling只是一个固定的函数

Alt text

Alt text

Alt text

Alt text

卷积的好处:
卷积层的参数很少。
有很好的迁移性

Alt text
res net :

Alt text

Alt text
可以避免训练层数非常大时,随着层数的增加结果反而变差的问题。
可以训练更深的网络

1×1convolutions:
可以调整层的channel的数量。

Alt text

inception network:

Alt text
此时复杂度为120Miliion
使用bottleneck layer 后:

Alt text
计算复杂度大量减少

Alt text

Alt text

transfer learning in CNN:
可以把开源的代码的参数拿来使用,并且固定一部分层的参数,使其在训练中不进行更新。重新设置最后一层或几层的结构,再使用自己的数据进行训练。

Alt text

Alt text

Alt text

Alt text

Alt text

Alt text

Alt text

Alt text
用一个个方框分别计算框里是否有目标物体,采用不同大小的框一定的stride全部跑一遍。
问题:计算量很大。
使用卷积的方法来实现
YOLO 算法:
把输入的100*100的图像进行网格拆分比如拆分为9个。根据每个网格中物体的标记,把每个网格中都有一个output。使输出从8,变为3*3*8.
因为变为网格后,方框标记在当前网格的比例比在整张图片的比例要大。所以得到的方框标记效果会更好。
把图片进行网格拆分-》提高标记方框的效果