requires_grad
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 20/78
- 5 dk
requires_grad=True ile tensor gradyan takibi açılır.
requires_grad
Autograd yalnızca requires_grad=True olan tensörleri izler. Model parametreleri (nn.Linear ağırlıkları) bunu otomatik açar; girdi verisi ve etiketler için kapalıdır. Bu bayraktan türetilen her tensör de izlenir:
w = torch.tensor([1.0, 2.0], requires_grad=True)
x = torch.tensor([3.0, 4.0]) # izlenmez
z = w * x
print(z.requires_grad) # True: w'den türedi
print(x.requires_grad) # FalseSonradan açmak için yerinde sürüm kullanılır: t.requires_grad_().
no_grad ve detach
Değerlendirme ve tahmin sırasında gradyan gerekmez; izlemeyi kapatmak bellek ve süre kazandırır. torch.no_grad() bir blokta, detach() tek bir tensörde izlemeyi keser:
with torch.no_grad():
tahmin = model(X_test) # grafik kurulmaz
print(tahmin.requires_grad) # False
z = (w * 2).detach() # w'den koparılmış kopya
print(z.requires_grad) # FalseÇıktıyı NumPy'a çevirmek için de izlenen tensör önce detach() edilmelidir.
Uygulama İzlemeyi denetle
w izlenen, x izlenmeyen tensörlerdir. w * x, torch.no_grad() içinde hesaplanan w * x ve (w * x).detach() sonuçlarının requires_grad değerlerini aynı satırda yazdır.
Başlangıç kodu
import torch
w = torch.tensor([1.0, 2.0], requires_grad=True)
x = torch.tensor([3.0, 4.0])
# buraya yazÖrnek çözüm
import torch
w = torch.tensor([1.0, 2.0], requires_grad=True)
x = torch.tensor([3.0, 4.0])
a = w * x
with torch.no_grad():
b = w * x
c = (w * x).detach()
print(a.requires_grad, b.requires_grad, c.requires_grad)Beklenen çıktı
True False False
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Tam sayı türündeki bir tensörde <code>requires_grad=True</code> verilirse ne olur?
- Otomatik float olur
- Gradyan sıfır olur
- Hata verir; yalnızca ondalıklı türler türevlenebilir Doğru cevap
- Sorunsuz çalışır
Açıklama: Türev sürekli değerler gerektirir; int tensörleri izlenemez.
2 Tahmin sırasında izlemeyi kapat.
with torch.____():
tahmin = model(X_test)
with torch.no_grad():
tahmin = model(X_test)
Açıklama: torch.no_grad() blok boyunca grafik kurulmasını engeller.
3 Durumları eşleştir.
| Kavram | Anlamı |
|---|---|
requires_grad=True |
Parametre |
girdi verisi |
İzlenmez |
torch.no_grad() |
Blokta izleme yok |
detach() |
Grafikten kopar |