赞
踩
环境:练习1的环境
0.导入库
import torch
from torch import nn
from d2l import torch as d2l
1.初始化数据
这里初始化出train_iter test_iter 可以查一下之前的获取Fashion数据集后的数据格式与此对应
n_train, n_test, num_inputs, batch_size = 20, 100, 200, 5
true_w, true_b = torch.ones((num_inputs, 1)) * 0.01, 0.05
train_data = d2l.synthetic_data(true_w, true_b, n_train)
train_iter = d2l.load_array(train_data, batch_size)
test_data = d2l.synthetic_data(true_w, true_b, n_test)
test_iter = d2l.load_array(test_data, batch_size, is_train=False)
2.简洁实现
这补充个多层的写法
optimizer = torch.optim.SGD([
{“params”: net[0].weight, “weight_decay”: wd},
{“params”: net[0].bias},
{“params”: net[1].weight, “weight_decay”: wd},
{“params”: net[1].bias},
{“params”: net[2].weight, “weight_decay”: wd},
{“params”: net[2].bias}
], lr=lr)
def train_concise(wd): #定义了一层线性层模型,输入特征个数是num_inputs(怎么来的?) 输出个数是1 net=nn.Sequential(nn.Linear(num_inputs,1)) for param in net.parameters(): #初始化w,b 按照(均值为0,方差为1)来初始化,b会被随机初始化为较小的值 param.data.normal_() #定义损失函数 loss=nn.MSELoss(reduction='none') num_epochs,lr=100,0.03 #定义优化器(这里开始设置限制w^2对于损失函数的影响大小了 -> wd) #这段代码包含了神经网络第一层的所有参数,并且为这些参数应用了不同的设置或限制 #因为这个模型只有一层 trainer=torch.optim.SGD([ {"params":net[0].weight,'weight_decay': wd}, {"params":net[0].bias}], lr=lr) #x轴是epochs y轴是loss #x轴设置范围从第五轮到 最后一轮 y轴设置对数标度 对数标度:对原始数据进行对数变换后显示的 #legend=['train', 'test']: 这为图表设置了图例,标识两条曲线分别代表训练集("train")和测试集("test")的损失值 animator = d2l.Animator(xlabel='epochs', ylabel='loss', yscale='log', xlim=[5, num_epochs], legend=['train', 'test']) for epoch in range(num_epochs): for X, y in train_iter: trainer.zero_grad() l = loss(net(X), y) l.mean().backward() trainer.step() if (epoch + 1) % 5 == 0: #相当于在animator增加数据点 epoch,训练平均损失,测试平均损失 animator.add(epoch + 1, (d2l.evaluate_loss(net, train_iter, loss), d2l.evaluate_loss(net, test_iter, loss))) print('w的L2范数:', net[0].weight.norm().item()) #开始测试 train_concise(0)
1.权重衰减是怎么做到的:
Loss=Loss+lamb/2 * (w^2)
当w越大Loss越大,Loss越大,越要减小,也同时减小w
2.原理:
多个函数下如何算最值
3.代码实现:
trainer=torch.optim.SGD([
{“params”:net[0].weight,‘weight_decay’: wd},
{“params”:net[0].bias}], lr=lr)
参考视频:
https://www.bilibili.com/video/BV1Z44y147xA/?spm_id_from=333.999.0.0&vd_source=302f06b1d8c88e3138547635c3f4de52
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。