13 丢弃法【动手学深度学习v2】

丢弃法是一种防止过拟合的正则化技术,通过在神经网络层间引入随机扰动,等效于数据增强,增加了模型的泛化能力。在训练过程中,dropout按一定概率将层的输出置零,以此减少依赖特定节点的权重,而在推理时则不使用dropout以保持网络的完整输出。文章还提到了代码实现中的assert语句以及如何在PyTorch中自定义模型时使用nn.Module。
摘要由CSDN通过智能技术生成

丢弃法理论

可能比权重衰减的效果更好

输入数据加入随机扰动可以防止过拟合,泛化性更好,等价于一种正则方式。

现在对噪音的添加方式从输入位置放到了层间位置。

相当于数据增强了,样本变得更多了,减少过拟合,增强泛化

上一层给下一层的输出是一个向量X,将向量中的每个元素大小进行改变,对每个元素而言,有p的概率将其变为0,否则就是将它除以1-p

也就是说,我现在加入了层间噪声,但是呢,我还想无偏差的加,那我应该怎样加呢?

那么,

每个样本变为0的概率,我设置为 p

每个样本不变的概率,我设置为 Xi / 1-p

这样设置,我可以去求期望,得到的期望和上面是一样的没有变化 E(x) = x

dropout是把数值设为零,如果某个minibatch全部dropout的话,就不会更新任何参数

别的模型都是想办法增加复杂度,MLP一出场就是各种想办法让它不要太复杂

dropout是一个正则项,正则项只在训练中使用

dropout() 可以设置dropout 多少百分比的

输入的每一个样本点都经历的是不同的神经网络结构

正则项,只在训练中使用,这样可以改变权重。如果是测试,这不需要使用正则项。

在推理的时候,我的dropout 就不会再做变0处理了

代码实现

assert(断言)

判断assert后的表达式是否为true,若为true就继续执行下面的代码,若为false,则触发异常

rand 和 randn

rand是随机生成值在0-1之间的函数;

randn是随机生成均值为0,方差为1的正态分布上的数值。

通过继承nn.Module类来实现自定义模型,需要在__init__构造函数中申明各个层的定义

为什么linear里的参数是num_hiddens1,但在使用的时候却是直接用了H1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值