nn.Dropout和F.dropout的理解与使用

1.使用的原由:

大规模的神经网络有两个缺点:

  • 费时
  • 容易过拟合

2.Dropout的正式介绍

  • Dropout是减少过拟合并提高模型泛化能力的一个大杀器。
  • 一般只有训练时才使用 Dropout,在验证或测试时不需要使用 Dropout
  • 对于神经网络单元,按照一定的概率将其暂时从网络中丢弃.(随机丢弃神经元)
  • Dropout一般用在全连接神经网络映射层之后,如代码的nn.Linear(20, 30)之后

在这里插入图片描述

 

每次做完dropout,相当于从原始的网络中找到一个更的网络,如下图所示:
在这里插入图片描述

 

在训练CNN网络的时候,常常会使用dropout来使得模型具有更好的泛化性,并防止过拟合。而dropout的实质则是以一定概率使得输入网络的数据某些维度上变为0,这样可以使得模型训练更加有效。但是我们需要注意dropout层在训练和测试的时候,模型架构是不同的。为什么会产生这种差别呢?

训练和测试的不同:

  • 训练层面

  标准的网络连接 和 增加了dropout层的网络结构如下图:

在这里插入图片描述

  此处的     是服从参数为p的伯努利分布的随机数(0或者1),用一句话来说就是y这个向量的每一个维度都会以概率p变为0。

对应的公式变化如下如下:

  • 没有dropout的神经网络

在这里插入图片描述

  • 有dropout的神经网络
    在这里插入图片描述

  • 测试层面

  问题来了,在训练的时候我们是有dropout层的,那我们测试的时候还需要么?答案是不需要dropout层了,而是直接把y输入进网络。这时候问题又来了,如果直接把y输入进网络,在训练的时候y由于经历了dropout层,意味着y的数据分布的期望应该是会乘以p的(举个例子如果y的每一个维度都是1,那么经过dropout层之后,有些维度变成了0,那此时真正进入网络的数值分布其期望应该是p),而测试时没有经过drop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值