Pytorch学习第二次打卡

Pytorch学习第二次打卡

目录

过拟合、欠拟合及其解决方案

欠拟合

模型无法得到较低的训练误差,我们将这一现象称作欠拟合(underfitting);

线性函数拟合,如图:

在这里插入图片描述

过拟合

另一类是模型的训练误差远小于它在测试数据集上的误差,我们称该现象为过拟合(overfitting)。训练样本不足,如下图:

在这里插入图片描述

给定训练数据集,模型复杂度和误差之间的关系:

在这里插入图片描述

  • 欠拟合现象:模型无法达到一个较低的误差
  • 过拟合现象:训练误差较低但是泛化误差依然较高,二者相差较大

解决方法

  1. 权重衰减

    ​ 权重衰减等价于 L2范数正则化(regularization)。正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段。

  2. 丢弃法

    ​ 简单说,就是随机丢弃隐藏层单元。参数dropout。丢弃法不改变其输入的期望值。可应对过拟合的问题;

部分代码:

net = nn.Sequential(
        d2l.FlattenLayer(),
        nn.Linear(num_inputs, num_hiddens1),
        nn.ReLU(),
        nn.Dropout(drop_prob1),
        nn.Linear(num_hiddens1, num_hiddens2), 
        nn.ReLU(),
        nn.Dropout(drop_prob2),
        nn.Linear(num_hiddens2, 10)
        )

for param in net.parameters():
    nn.init.normal_(param, mean=0, std=0.01)

梯度消失,梯度爆炸

深度模型有关数值稳定性的典型问题是消失(vanishing)和爆炸(explosion)。

当神经网络的层数较多时,模型的数值稳定性容易变差。

​ 假设一个层数为L的多层感知机的第l层H(l)的权重参数为W(l),输出层H(L)的权重参数为W(L)。为了便于讨论,不考虑偏差参数,且设所有隐藏层的激活函数为恒等映射(identity mapping)ϕ(x)=x。给定输入X,多层感知机的第l层的输出H(l)=XW(1)W(2)…W(l)。此时,如果层数l较大,H(l)的计算可能会出现衰减或爆炸。举个例子,假设输入和所有层的权重参数都是标量,如权重参数为0.2和5,多层感知机的第30层输出为输入X分别与0.230≈1×10−21(消失)和530≈9×1020(爆炸)的乘积。当层数较多时,梯度的计算也容易出现消失或爆炸。

卷积神经网络

​ 卷积神经网络包括卷积层和池化层,有填充、步幅、输入通道和输出通道等参数。如 LeNet交替使用卷积层和最大池化层后接全连接层来进行图像分类。

卷积层

使用Pytorch中的nn.Conv2d类来实现二维卷积层,主要关注以下几个构造函数参数:

  • in_channels 输入通道
  • out_channels 输出通道
  • kernel_size 卷积核尺寸
  • stride 步长,默认1
  • padding 填充,默认0
  • bias 偏置,

池化层

使用Pytorch中的nn.MaxPool2d实现最大池化层,关注以下构造函数参数:

  • kernel_size
  • stride
  • padding

常见卷积网络

一、AlexNet

特征:

  1. 8层变换,其中有5层卷积和2层全连接隐藏层,以及1个全连接输出层。

  2. 将sigmoid激活函数改成了更加简单的ReLU激活函数。

  3. 用Dropout来控制全连接层的模型复杂度。

  4. 引入数据增强,如翻转、裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合。

二、VGG

通过重复使⽤简单的基础块来构建深度模型。

​ Block:数个相同的填充为1、窗口形状为3×33×3的卷积层,接上一个步幅为2、窗口形状为2×22×2的最大池化层。
卷积层保持输入的高和宽不变,而池化层则对其减半。

三、NiN

​ 串联多个由卷积层和“全连接”层构成的小⽹络来构建⼀个深层⽹络。
​ ⽤了输出通道数等于标签类别数的NiN块,然后使⽤全局平均池化层对每个通道中所有元素求平均并直接⽤于分类。

四、GoogLeNet

  1. 由Inception基础块组成。
  2. Inception块相当于⼀个有4条线路的⼦⽹络。它通过不同窗口形状的卷积层和最⼤池化层来并⾏抽取信息,并使⽤1×1卷积层减少通道数从而降低模型复杂度。
    平均并直接⽤于分类。

四、GoogLeNet

  1. 由Inception基础块组成。
  2. Inception块相当于⼀个有4条线路的⼦⽹络。它通过不同窗口形状的卷积层和最⼤池化层来并⾏抽取信息,并使⽤1×1卷积层减少通道数从而降低模型复杂度。
  3. 可以⾃定义的超参数是每个层的输出通道数,我们以此来控制模型复杂度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值