Indexing
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 17/78
- 5 dk
Tensor elemanlarına indeks ile erişilir.
İndeksleme
İndeksleme ve dilimleme NumPy'daki gibidir; ek olarak toplu veri işlerinde sık kullanılan birkaç fonksiyon vardır:
x = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(x[1].tolist()) # [4, 5, 6]
print(x[:, -1].tolist()) # [3, 6, 9]
print(x[x > 4].tolist()) # [5, 6, 7, 8, 9] boolean maske
print(x[[0, 2]].tolist()) # [[1, 2, 3], [7, 8, 9]]Sınıflandırmada tahmin edilen sınıf cikti.argmax(dim=1), en yüksek k olasılık torch.topk ile alınır.
gather ve doğru sınıfın skoru
Her örnek için doğru sınıfın olasılığını almak, kayıp hesaplarında sık yapılır. gather her satırdan verilen sütun indeksini seçer; gelişmiş indeksleme de aynı işi görür:
p = torch.tensor([[0.7, 0.2, 0.1], [0.1, 0.1, 0.8]])
y = torch.tensor([0, 2])
print(p.gather(1, y.unsqueeze(1)).squeeze(1).tolist()) # [0.7..., 0.8...]
print(p[torch.arange(2), y].tolist()) # aynısıKayan nokta değerleri yazdırılırken round kullanmak çıktıyı okunur yapar.
Uygulama Doğruluk hesabı
Verilen logitlerden tahmin edilen sınıfları argmax(dim=1) ile al ve tolist() ile yazdır. Doğruluğu (tahmin == y).float().mean().item() ile, ardından doğru sınıfların logitlerini logit[torch.arange(len(y)), y].tolist() ile yazdır.
Başlangıç kodu
import torch
logit = torch.tensor([[2., 1., 0.], [0., 3., 1.], [1., 0., 4.], [5., 1., 2.]])
y = torch.tensor([0, 1, 1, 0])
# buraya yazÖrnek çözüm
import torch
logit = torch.tensor([[2., 1., 0.], [0., 3., 1.], [1., 0., 4.], [5., 1., 2.]])
y = torch.tensor([0, 1, 1, 0])
tahmin = logit.argmax(dim=1)
print(tahmin.tolist())
print((tahmin == y).float().mean().item())
print(logit[torch.arange(len(y)), y].tolist())Beklenen çıktı
[0, 1, 2, 0] 0.75 [2.0, 3.0, 0.0, 5.0]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yukarıdaki <code>x</code> için <code>x.argmax(dim=1).tolist()</code> neyi verir?
- [0, 1, 2]
- [2, 5, 8]
- 8
- [2, 2, 2] Doğru cevap
Açıklama: Her satırda en büyük değer son sütundadır (indeks 2).
2 Her satırın en büyük değerinin indeksini al.
tahmin = cikti.____(dim=1)
tahmin = cikti.argmax(dim=1)
Açıklama: argmax(dim=1) sınıf tahminini verir.
3 İfadeleri eşleştir.
| Kavram | Anlamı |
|---|---|
x[:, 0] |
İlk sütun |
x[x > 0] |
Maskeyle seçim |
argmax(dim=1) |
Satır başına en büyük |
gather |
Satır başına indeksli seçim |