在这段时间的学习中,对卷积网络有了更深入的了解。刚开始,在卷积层的输入和输出很是不理解,最后是怎么得到输出数据的大小尺寸的。然后去博客看了一些博主对卷积神经网络结构的介绍,了解到在计算网络层输出的时候有一个公式为:N=(W-F+2P)/S +1。其中N为输出大小,W为输入的大小,F为卷积核(滤波器)的大小,P为填充值的大小,S为步长。然而在实际上输入图片通常有多个通道,比如彩色图片就有RGB三个通道,所以输入的图片形状一般为C*H*W,C指的是通道数。同时在卷积操作中的输出特征图也会有多个输出通道,这是就应该有Y个维度为X*H*W的卷积核,进行卷积之后,形成了Y*H*W的三维向量(H,W代表输出的大小)。卷积核的输出通道数叫做卷积核的个数。在看的视频课程中我发现老师使用的激活函数都为RelU激活函数,基本不用sigmod函数。在选择使用激活函数时是不是就用ReLU函数,还是说sigmod函数已经很少用了。
深度神经网络一般由卷积部分和全连接部分构成。卷积部分一般包含卷积、池化、Dropout等,其中Dropout层必须放在池化之后。全连接部分一般最多包含2到3个全连接。
常见的卷积层的组合结构有堆叠(串联)、跳连和并连。串联结构代表有VGGNet、AlexNet等。跳连比较典型的有resNet。并联比较典型的有InceptionV1,目前还没有了解。VggNet使用小卷积核和更深的网络结构来提升性能。VGGNet全部使用3*3的卷积核,并且在池化层也都使用了2*2的最大池化卷积核。关于ResNet我看了一节吴恩达教授关于Resnet的介绍。在课程中跳连就类似于跳过一层或者好几层,从而将信息传递到神经网络的更深层。ResNet是由残差块构建的。ResNet的方法是加上所有跳跃连接,每两层增加一个捷径,构成一个残差块。ResNet有助于解决梯度消失和梯度爆炸问题。后面看了mobileNet还没看完。
本周虽然跟着课程对VGGNet、ResNet、和MobileNet进行了代码的实现,但是感觉对网络的理解不够,没有去看网络推导过程。昨天一个学的比较久的同学也给我实现了一个简单的汉字识别。让我了解到在写一个项目的时候,第一步先处理数据,第二步搭建网络,第三步训练数据,最后一步测试数据。这段时间的学习,没有之前那么困难,对好多东西也理解了。下周准备尝试自己去完成一个甲骨文数据集分类。