PyTorch中的自动记录力学 – 1
Autograd力学
本说明将显示autograd如何运行和记录任务的K线走势图。看到这一点并不重要,但我们建议您熟悉它,因为它可以让您逐步构建有效,清洁的程序,并可以帮助您进行故障排除。
反过来禁止子图
每个Tensor都有一个标题:requires_grad,它考虑从斜率计算中细粒度地禁止子图,并可以扩展有效性。
- requires_grad
如果对一项需要倾向的活动有单独贡献,那么它的产量同样需要斜率。然后,如果所有数据源都不需要角度,则产量同样不需要它。反向计算从不在子图中执行,其中所有张量都不需要斜率。
>>> x = torch.randn(5,5)#requires_grad = False当然
>>> y = torch.randn(5,5)#requires_grad = False当然
>>> z = torch.randn((5,5),requires_grad = True)
>>> a = x + y
>>> a.requires_grad
假
>>> b = a + z
>>> b.requires_grad
真正
当你需要停止模型的某些部分,或者你提前知道你不打算使用角度w.r.t时,这尤其有用。一些参数。例如,如果您需要对预训练的CNN进行微调,则在固化基础中切换requires_grad信号就足够了,并且不会中间任何中间支架,直到计算到达最后一层,相对变化将利用负载需要倾斜的,系统的产量同样需要它们。
model = torchvision.models.resnet18(pretrained = True)
for model.parameters()中的param:
param.requires_grad =假
#替换最后一个完全关联的图层
#最近构建的模块的参数当然是requires_grad = True
model.fc = nn.Linear(512,100)
#优化分类器
enhancer = optim.SGD(model.fc.parameters(),lr = 1e-2,momentum = 0.9)