9.2 Dropout

Dropout是一种有效的正则化技术,通过随机失活神经元来减轻模型的过度依赖,防止过拟合。在PyTorch中,dropout层的使用可以显著改善模型的泛化能力,减少方差。在训练时,神经元有概率被失活,而在测试时,所有权重会被预先缩放,以保持模型的期望行为。
摘要由CSDN通过智能技术生成

一、Dropout的概念

二、Dropout的使用

实际使用有:torchvision自带的alexnet模型

一、Dropout概念

随机失活。随机是指:有一定的概率让神经元失去活性。失活:权重等于0.

看如下示意图:

左边是正常的全连接神经网络。右边是加了dropout,打×的是失活了。

这就可以让神经元学习到更鲁棒的特征,减轻过度的依赖性,从而缓解了过拟合,降低方差,达到正则化的效果。

这个操作也会使得我们的模型更加多样化,因为每一次进行前向传播,神经元都是随机失活,所训练的模型都是不一样的。

为什么可以得到正则化的效果呢?可以从两个角度进行思考。

1. 从依赖性角度。一个神经元可以接受上层的输出,如果特别它特别依赖与某个特征,它可能会给这个的权值很大,而其他的权重很小。加了dropout之后,就不知道上一层哪些神经元会出现,所以就不会对某些神经元过度依赖。这时候就需要把经历平均地放到前面的神经元上。

2. 从数值的角度考虑。所有的权重在数值上是差不多大小的。这样就实现了权重的约束。

二、Dropout的使用

1. 注意事项

使用过程中,需要注意:

在测试的时候,需要乘以一个系数。

我的理解是,比如我跟张三一起做一个项目。今天我来了,张三不来,我干的很好。明天,我不来,张三来了,他也干的很好。干了很多天之后,最后结果就是我和张三都能单独的做项目。突然有一天我俩一起来了。。。我俩一起干半天估计就能把一天的活干完。

2. pytorch中dropout的使用

我们来看一下pytorch提供的dropout层:

例1:dropout的使用

#dropout_regularization.py

# -*- coding:utf-8 -*-
"""
@file name  : dropout_regularization.py
@brief      : dropout 使用实验
"""
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import sys, os
hello_pytorch_DIR = os.path.abspath(os.path.dirnam
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值