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

本文探讨了在深度学习中如何使用平均小批量损失替代总损失,并介绍了PyTorch中的SmoothL1Loss(Huber损失)作为替代损失函数。通过示例展示了在训练过程中如何计算和更新梯度,以及如何访问线性回归模型的权重梯度。实验结果显示,学习率调整对模型收敛有显著影响。
摘要由CSDN通过智能技术生成
  1. 如果将小批量的总损失替换为小批量损失的平均值,你需要如何更改学习率?
    解:默认的其实就是平均值(mean squared),问题问得不对,要反过来做。学习率除batch_size即可
  2. 查看深度学习框架⽂档,它们提供了哪些损失函数和初始化⽅法?⽤Huber损失代替原损失,即
    在这里插入图片描述
    提供的loss如下图所示,如果需要具体了解可以使用help(torch.nn.xxxLoss)或者百度查询
    在这里插入图片描述
# huber损失对应Pytorch的SmoothL1损失
loss = nn.SmoothL1Loss(beta=0.5)
num_epochs = 3
for 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.00011211777746211737
epoch: 2, loss:0.00013505184324458241
epoch: 3, loss:4.4465217797551304e-05

'''
  1. 你如何访问线性回归的梯度?
net[0].weight.grad,net[0].bias.grad
'''
(tensor([[-0.0040,  0.0027]]), tensor([0.0015]))
'''

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值