andrewng-depp-learning课程笔记-卷积神经网络
Published:
AndrewNg-depp learning课程笔记-卷积神经网络
edge detection
tf.nn.conv2d
用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)
f一般是奇数
stride convolution:
卷积的时候不是一步一步走,而是跳着计算
如果不能整除stride,用floor 代替.
当输入为n*n*3的时,可以使用f*f*3的filter,卷积后变成n-f+1*n-f+1*1
可以在同一层中同时使用多个filter。
每层的长和宽会逐渐减小,但是每层的channel的数量会逐渐增加
pooling layer:
max pooling 使用的更多,通常不使用padding
pooling层的参数不需要学习,pooling只是一个固定的函数
卷积的好处:
卷积层的参数很少。
有很好的迁移性
res net :
可以避免训练层数非常大时,随着层数的增加结果反而变差的问题。
可以训练更深的网络
1×1convolutions:
可以调整层的channel的数量。
inception network:
此时复杂度为120Miliion
使用bottleneck layer 后:
计算复杂度大量减少
transfer learning in CNN:
可以把开源的代码的参数拿来使用,并且固定一部分层的参数,使其在训练中不进行更新。重新设置最后一层或几层的结构,再使用自己的数据进行训练。
用一个个方框分别计算框里是否有目标物体,采用不同大小的框一定的stride全部跑一遍。
问题:计算量很大。
使用卷积的方法来实现
YOLO 算法:
把输入的100*100的图像进行网格拆分比如拆分为9个。根据每个网格中物体的标记,把每个网格中都有一个output。使输出从8,变为3*3*8.
因为变为网格后,方框标记在当前网格的比例比在整张图片的比例要大。所以得到的方框标记效果会更好。
把图片进行网格拆分-》提高标记方框的效果