毕设第二周任务总结

Part1:专知课程,卷积神经网络

绪论

CNN的应用

  1. 基本应用:分类、检索、检测、分割
  2. 人脸识别及人脸表情识别
  3. 图像生成、图像风格转化
  4. 自动驾驶

传统神经网络 VS 卷积神经网络

  • 深度学习三部曲:
    step1: Neural Network
    step2: Cost Function/Loss Function
    step3: Optimization

  • 传统神经网络全连接网络处理图像:
    参数太多:权重矩阵的参数太多 -> 过拟合

  • 卷积神经网络:
    局部关联,参数共享

  • 相同之处:
    CONV layer:卷积层
    RELU layer:RELU激活层
    POOL layer:池化层
    FC layer:全连接层

基本组成结构

卷积(Convolutional Layer)

实际上个人理解是做了图像变换:y = WX + b(W为filter,X为输入,b为偏置常数)
涉及的基本概念:
input:输入
kernel/filter:卷积核/滤波器
weight:权重
receptive field:感受野
activation map/feature map:特征图
padding:填充
depth/channel:深度
output:输出
stride:步长

  • 输出的特征图大小:
    (N - F)/stride + 1 (padding = 0)
    (N - F + padding * 2)/stride + 1
  • 卷积核filter的数量决定输出后特征图的channel

池化(Pooling Layer)

  • Pooling:
    – 保留了主要特征的同时减少参数和计算量,防止过拟合,提高模型泛化能力
    – 一般处于卷积层与卷积层之间,全连接层与全连接层之间
  • Pooling的类型:
    – Max Pooling:最大值池化
    – Average pooling:平均池化
    注:具体方法实现见PDF

全连接(Fully Connected Layer)

  • 全连接层/FC layer
    – 两层之间所有神经元都有权重链接
    – 通常全连接层在卷积神经网络尾部
    – 全连接层参数量通常最大

卷积神经网络典型结构

AlexNet

在这里插入图片描述

  • 特点
    – 大数据训练:百万计ImageNet图像数据
    – 非线性激活函数:ReLU
    – 防止过拟合:Dropout(随机失活),Data augmentation(数据增强)
    – 双GPU实现(受当时设备技术影响)
  • 激活函数ReLU
    – 解决了梯度消失问题
    – 计算速度特别快,只需要判断输入是否大于0
    – 收敛速度远快于sigmoid

ZFNet

网络结构和AlexNet相同,将卷积层1中的感受野大小从11X11改为7X7,步长由4改为2,卷积层3,4,5中的filter个数由384,384,256改为512,512,1024

VGG

8 layers(AlexNet) -> 16 - 19(VGG)
在这里插入图片描述

GoogleNet

在这里插入图片描述

  • 特点
    – 包含22个带参数的层(考虑pooling层就是27层),独立成块的层共约由100个
    – 参数量大概是AlexNet的1/12
    – 没有FC层
    – 采用多卷积核增加特征多样性(inception模块)
    inception V1:
    Inception V1
    inception V2:(插入1*1卷积核进行降维解决维度过高问题)在这里插入图片描述
    inception V3:(进一步对V2的参数量进行降低)
    在这里插入图片描述

ResNet

ResNet(deep residual learning network, 152 layers)
在这里插入图片描述

  • 残差的思想:去掉相同的主体部分,从而突出微笑的变化,详细见Part2。

Part2:京东专家结合 pytorch 代码讲解 ResNet

B站链接:PyTorch代码讲解ResNet

原理

CNN可抽象为一个复合函数H(x),但CNN在增加多层时会出现网络退化现象,层较深时难以通过H(x)预测,由残差学习方法,对于F(x)=H(x)-x来说会更好训练一些,所以我们令H(x) = F(x) + x来设计网络结构,如图(恒等映射与Shortcut即:identity Mapping Shortcut):
在这里插入图片描述
在这里插入图片描述
注:虚线处非恒等映射(结构发生变化)

  • 不同网络结构ResNet:
    在这里插入图片描述
  • 由上图可将网络分为5个stage,每个stage由不同的block组成,每个block由不同的conv组成。
  • Global Average Pooling层:对整个channel求平均,得到一个值,替代全连接层,参数会更少,防止过拟合
  • 50层以上的ResNet与50层以下的ResNet的组成结构的不同:BottleNeck
    在这里插入图片描述
    传统方法(左图)顺序进行,使用BottleNeck(右图)先将256维数据使用一个11的卷积核降维至64维,进行33的卷积,再将维度增至256维,防止参数过多

代码

此处记录代码学习过程中重点部分函数功能(部分与Part3参考对应)

  • nn.Conv2d(in_planes, out_planes, kernel_size, stride, padding, bias =False)
  • nn.BatchNorm2d
  • downsample 下采样

Part3:代码学习

部分函数参考

PyTorch加载数据:各函数讲解
nn.Sequential()参数参考
nn.Conv2d()参数参考
nn.Linear()参数参考
optimizer相关函数总结参考
nn.BatchNorm2d函数参考

疑问

  • Part3 使用VGG16对CIFAR10分类部分最后self.classifier = nn.Linear(2048, 10)的2048这个参数有些疑惑,待解决。
  • GoogleNet的inception和ResNet的降维思想有些类似。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值