欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

动手学深度学习pytorch版练习解答-3.3线性回归的简洁实现

时间:2023-05-26
如果将小批量的总损失替换为小批量损失的平均值,你需要如何更改学习率?
解:默认的其实就是平均值(mean squared),问题问得不对,要反过来做。学习率除batch_size即可查看深度学习框架⽂档,它们提供了哪些损失函数和初始化⽅法?⽤Huber损失代替原损失,即

提供的loss如下图所示,如果需要具体了解可以使用help(torch.nn.xxxLoss)或者百度查询

# huber损失对应Pytorch的SmoothL1损失loss = nn.SmoothL1Loss(beta=0.5)num_epochs = 3for epoch in range(num_epochs): for X, y in data_iter: l = loss(net(X), y) #开始计算梯度 trainer.zero_grad() l.backward() trainer.step() #对所有参数进行更新 print("epoch: {}, loss:{}".format(epoch + 1, l))#一开始取1时loss比较大,改成0.5再跑一次减少,可能与迭代次数关系比较大'''epoch: 1, loss:0.00011211777746211737epoch: 2, loss:0.00013505184324458241epoch: 3, loss:4.4465217797551304e-05'''

你如何访问线性回归的梯度?

net[0].weight.grad,net[0].bias.grad'''(tensor([[-0.0040, 0.0027]]), tensor([0.0015]))'''

为了可观性,这次除了需要高亮loss的,其他问题代码输出都放入了代码块中。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。