🎤 PyTorch-karaoke veya optimizer.zero_grad() unutmayı nasıl bırakırız

DL'de birçok acemi, karmaşık ağ mimarilerinde değil, sıradan PyTorch bürokrasisinde takılıp kalıyor. Eğitim döngüsündeki çağrı sırası, beyne kazınana kadar tekrar tekrar Google'da aranması gereken bir şeydir.

Modeli train() moduna almayı unuttun mu? Dropout/BatchNorm nedeniyle yanlış ağırlıklar alırsın.
zero_grad() unuttun mu? Tebrikler, gradyanlar birikir, eğitim çöpe gider.
step() i backward() öncesine koydun mu? Anladınız.

Şu videoya denk geldim, aynı anda iki duygu uyandırıyor: aşırı utanç ve saygı.
Bir adam şortla ve mikrofonla dağınıklığın ortasında Backpropagation'un 5 adımını kafadan çıkmayacak bir melodiye uyarlamış.
Sanki bu, slaytlardan okuyan uzmanların 10 saatlik sıkıcı derslerinden daha iyi çalışıyor.

Konuyu bilmeyenler için hatırlatıyorum, tek doğru adım sırası (ya da şarkıyı öğrenin):

1️⃣ model.train() — modeli savaş moduna al.
2️⃣ y_pred = model(x) — Forward pass.
3️⃣ loss = loss_fn(y_pred, y) — Ne kadar yanıldığımızı hesapla.
4️⃣ optimizer.zero_grad() — Yeni adımdan önce gradyanları sıfırla, yoksa birikir ve uzaya uçarsınız.
5️⃣ loss.backward() — Gradyanları hesapla (geri yayılım).
6️⃣ optimizer.step() — Optimizer ile adım at.

Bir de TensorFlow versiyonu olsaydı, ama orada korkarım sadece değişkenleri başlatmak için üç perdelik bir opera yazmak gerekirdi 🌚

#eğlence_olsun