深度学习丢弃法调参分析

深度学习丢弃法调参分析

net = nn.Sequential(
        d2l.FlattenLayer(),
        nn.Linear(num_inputs, num_hiddens1),
        nn.ReLU(),
        nn.Dropout(drop_prob1),
        nn.Linear(num_hiddens1, num_hiddens2),
        nn.ReLU(),
        nn.Dropout(drop_prob2),
        nn.Linear(num_hiddens2, 10)
        )
#初始化参数
for param in net.parameters():
    nn.init.normal_(param, mean=0, std=0.01)

#定义优化器
optimizer = torch.optim.SGD(net.parameters(), lr=0.5, weight_decay = 0.01)
#训练模型
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs,
             batch_size, None, None, optimizer)

(1)如果把本节中的两个丢弃概率超参数对调,会有什么结果?


drop_prob1, drop_prob2 = 0.2, 0.5
改为
drop_prob1, drop_prob2 = 0.5, 0.2

结果为
在这里插入图片描述
结论思路:因为增大了输入层的丢弃率,考虑模型收敛情况。
(提示:输入层的丢弃率设置要低)

(2)增大迭代周期数,比较使用丢弃法与不使用丢弃法的结果。

1.不使用丢弃法即将
nn.Dropout(drop_prob1)
改为
nn.Dropout(0)
如果有多个,则其他也进行更改

2.接着将num_epochs改为一个更大的值,小编将num_epochs改为10

没使用丢弃法

在这里插入图片描述

使用了丢弃法
在这里插入图片描述

结论:从在周期较小时进行分析,同时也就随着周期的增加进行分析。

(3)如果将模型改得更加复杂,如增加隐藏层单元,使用丢弃法应对过拟合的效果会更加明显吗?

将num_hiddens1, num_hiddens2改为更大的数
在这里插入图片描述
结论思路:增加了隐藏层单元后,从模型复杂程度,收敛速度,但是收敛效果进行分析

(4)比较使用丢弃法与权重衰减的效果。如果同时使用丢弃法和权重衰减,效果会如何?

添加weight-decay参数,可在SGD中使用权重衰减
在这里插入图片描述
解题思路:
将以下方案相应的超参数进行更改即可。
1.只使用丢弃法,不使用权重衰减(是否使用weight-decay参数)
2.只使用权重衰减,不使用丢弃法(上文提及)
3.两者同时使用(同时使用)

即可将这三者进行分析比较。

发布了4 篇原创文章 · 获赞 4 · 访问量 26

猜你喜欢

转载自blog.csdn.net/weixin_44726653/article/details/105484983
今日推荐