CodeBlanks Logo Icon CodeBlanks

requires_grad

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)                # False

Sonradan 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

model.py
import torch

w = torch.tensor([1.0, 2.0], requires_grad=True)
x = torch.tensor([3.0, 4.0])

# buraya yaz

Örnek çözüm

model.py
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.

Soru
with torch.____():
    tahmin = model(X_test)
Cevap
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

İleri seviye bölümündeki tüm dersler