练习5-丢弃法(包含部分丢弃法理解)

util为练习3的解决办法导致的,如果d2l可以正常执行,可无视

代码简解

import torch
from torch import nn
import util as d2l


### 定义模型参数与数据
num_epochs, lr, batch_size = 10, 0.5, 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
dropout1, dropout2 = 0.2, 0.5


### 定义模型
net=nn.Sequential(nn.Flatten(),nn.Linear(784,256),nn.ReLU(),
                  nn.Dropout(dropout1),nn.Linear(256,256),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)

陌生代码

net=nn.Sequential(nn.Flatten(),nn.Linear(784,256),nn.ReLU(),
nn.Dropout(dropout1),nn.Linear(256,256),nn.Dropout(dropout2)
,nn.Linear(256,10))

丢弃法理解

丢弃法目的是:
通过减少数据量,来减少过拟合

怎么减少数据量:
通过为每层的输入设置概率即第一层 dropout设置为0.2,第一层的输入的每个数据有0.2的概率被丢弃,0.8的概率正常使用

为什么在多层设置dropout:
因为不同层的w对数据的要求是不一样的,也许上一层不在过拟合,但下一层仍旧过拟合

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值