• 16李沐动手学深度学习v2/丢弃法 (dropout) 简介实现


    import torch
    from torch import nn
    from d2l import torch as d2l
    
    # 超参数
    dropout1,dropout2=0.2,0.5
    num_epochs,lr,batch_size=10,0.5,256
    
    # 数据
    train_iter,test_iter=d2l.load_data_fashion_mnist(batch_size)
    
    # 模型
    # Flatten,展平层,输入展开(-1,784)
    net=nn.Sequential(nn.Flatten(),nn.Linear(784,256),nn.ReLU(),
    nn.Dropout(dropout1),nn.Linear(256,256),nn.ReLU(),nn.Dropout(dropout2),nn.Linear(256,10))
    
    def init_weights(m):
        if type(m)==nn.Linear:
            nn.init.normal_(m.weight,std=0.01)
    # 参数
    net.apply(init_weights)
    # 损失函数
    loss=nn.CrossEntropyLoss(reduction='none')
    # 优化函数
    trainer=torch.optim.SGD(net.parameters(),lr=lr)
    #  训练
    d2l.train_ch3(net,train_iter,test_iter,loss,num_epochs,trainer)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    在这里插入图片描述

    query

    dropout随机置0对求梯度和反向传播的影响

    • 答:置0后,参数不会更新

    dropout随机丢弃,可重复性?

    • 答:没必要可重复。随机性可以更平滑。可以通过固定随机种子的方式,达到可重复性。但初始化参数也是随机的。GPU cudnn并行后做加法时,n个数相加的顺序不一样(浮点数精度造成),结果不一样,结果几乎不会重复

    神经网络,正确性?

    • 答:没有正确不正确,只有效果好不好

    预测/推理中神经元没有丢弃

    • 答:没有丢弃。模型参数已经固定再去预测
    • 答:如果在推理或者预测的时候使用dropout将会造成结果的随机性,训练过程中大量使用dropout随机性已经被平均了,结果不随机了,结果是稳定的。

    BN和dropout

    • 答:dropout是作用再全连接层上的
    • 答:BN可作用在卷积层上,也可作用在全连接层上

    标签正则化

    • 答:标签的dropout也可以,输入层dropout也可以

    /(1-p)的原因dropout

    • 答:保持期望不变

    泰斗hiton,最早的dropout每次随机选择几个子网络最后做平均的做法,类似于随机森林多决策树做投票的思想

    • 答:是的。

    防止过拟合

    • 答:dropout,权重衰退

    dropout丢弃前一层输的输出后一层的输入

    dropout和权重衰退

    • 答:权重衰退更加常用,因为dropout只能应用于全连接层
    • 答:dropout效果更好,因为更好调参

    dropout常用值

    • 答:0.1,0.5,0.9

    !!!深度学习允许你过拟合,然后通过各种方式调整

    dropout介入后,需要调整lr

    • 答:没有听说过。期望没有改变

    dropout的介入会造成收敛变慢

    • 答:因为丢弃了一些参数
  • 相关阅读:
    Spring很常用的@Conditional注解的使用场景和源码解析
    mongo数据同步的三种方案
    Java学习笔记33——特殊操作流
    ThingsBoard如何自定义tcp-transport
    在线直播性能分析:用3个小时分析一个系统的性能瓶颈(从现象到代码)
    放弃5k事业编选择了15k的程序员,真的值得么?
    B-神经网络模型复杂度分析
    MongoDB分片集群搭建
    TiDB x 北京银行丨新一代分布式数据库的探索与实践
    《纳瓦尔宝典》和一个智者的对话的奇妙旅程
  • 原文地址:https://blog.csdn.net/baidu_35805755/article/details/126800615