概述
过欠拟合以及解决方案
知识重点
1.K交叉验证没明白有什么用?
2.单层神经元个数, 相当于多项式拟合的次数, 但是好像神经网络都是1次方, 那到底是相当于层数加深? 还是单层参数变大? 还是目前的网络都不体现 x 的多次方???
3.难道需要和代码中构造的 3dim features 一样, 预处理特征或者特征工程的时候用别的工具提取次方信息? 也就是神经网络特征提取忽略了很多数学意义特征, 需要有 kaggle 里面好的特征工程的方法辅助.
4.opt 赋予 w 得到 opt_w 代替 w 参与计算. 但是之前直接 params list 传入 opt, 那种做法是怎样的? torch.optim.SGD(params=[net.weight], lr=lr, weight_decay=wd) 平时会用到吗? 还是 loss 多加上一部分, 看别人的代码好了.
def fit_and_plot_pytorch(wd):
# 对权重参数衰减。权重名称一般是以weight结尾
net = nn.Linear(num_inputs, 1)
nn.init.normal_(net.weight, mean=0, std=1)
nn.init.normal_(net.bias, mean=0, std=1)
optimizer_w = torch.optim.SGD(params=[net.weight], lr=lr, weight_decay=wd) # 对权重参数衰减
optimizer_b = torch.optim.SGD(params=[net.bias], lr=lr) # 不对偏差参数衰减
train_ls, test_ls = [], []
for _ in range(num_epochs):
for X, y in train_iter:
l = loss(net(X), y).mean()
optimizer_w.zero_grad()
optimizer_b.zero_grad()
l.backward()
# 对两个optimizer实例分别调用step函数,从而分别更新权重和偏差
optimizer_w.step()
optimizer_b.step()
train_ls.append(loss(net(train_features), train_labels).mean().item())
test_ls.append(loss(net(test_features), test_labels).mean().item())
d2l.semilogy(range(1, num_epochs + 1), train_ls, 'epochs', 'loss',
range(1, num_epochs + 1), test_ls, ['train', 'test'])
print('L2 norm of w:', net.weight.data.norm().item())
5.标准的 opt 使用方法
optimizer = torch.optim.SGD(net.parameters(), lr=0.5)
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, No
最后
以上就是典雅发箍为你收集整理的《动手学深度学习》戴口罩的胡萝卜组 - 户建坤 第二次打卡 (过欠拟合; 梯度消失爆炸;RNN进阶; 机器翻译;注意力机制与Seq2seq; Transformer; CNN基础)过欠拟合以及解决方案梯度消失和爆炸RNN进阶机器翻译注意力机制与 seqs 模型TransformerCNN 基础LeNetCNN 进阶的全部内容,希望文章能够帮你解决《动手学深度学习》戴口罩的胡萝卜组 - 户建坤 第二次打卡 (过欠拟合; 梯度消失爆炸;RNN进阶; 机器翻译;注意力机制与Seq2seq; Transformer; CNN基础)过欠拟合以及解决方案梯度消失和爆炸RNN进阶机器翻译注意力机制与 seqs 模型TransformerCNN 基础LeNetCNN 进阶所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复