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)