【迁移学习(Transfer L)全面指南】不需要时关闭autograd的方法:torch.no_grad

本文详细解释了在PyTorch中为何及如何使用torch.no_grad上下文管理器来关闭autograd,以避免在验证过程中不必要的计算图构建和梯度累积,特别是在深度学习模型的验证阶段,这样做可以节省资源并防止过拟合。通过示例展示了在不需要梯度计算时如何利用这个工具,强调了在验证集上正确评估模型的重要性。
摘要由CSDN通过智能技术生成

从训练循环中,你注意到只能在train_loss上调用backward。因此,误差只会根据训练集来进行反向传播。验证集用于在未用于训练的数据上对模型输出的准确性进行独立的评估。

好奇的读者此时可能会有一个问题。我们对模型进行了两次评估(一次在train_t_u上,一次在val_t_u上),然后调用一次backward。这不会使autograd变得混乱吗?验证集评估过程中生成的值不会影响backward吗?

幸运的是,事实并非如此。训练循环中的第一行在train_t_u上对模型进行评估以产生train_t_p。然后用train_t_p计算train_loss,创建一个链接从train_t_u到train_t_p再到train_loss的计算图。当在val_t_u上再次评估模型然后生成val_t_p和val_loss时,将创建一个单独的计算图,该图链接从val_t_u到val_t_p再到val_loss。单独的张量通过相同的函数model和loss_fn运行,生成了单独的计算图,如下图所示。

在这里插入图片描述
本图显示了如果计算图有两个损失,对其中一个调用.backward时梯度如何在计算图中传播

这两个图唯一的共同点是参数。当在train_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理想不闪火

你的鼓励将是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值