Inside AI Models
← Tüm makaleler
Lineer CebirTemeller

Tensor Nedir? Derin Öğrenme için Lineer Cebir

24 Haz 2026 · 4 dk okuma

Paylaş

Derin öğrenmeye yeni başlayan hemen herkesin gözünü korkutan ilk kelimelerden biri tensor'dır. PyTorch ya da JAX dökümantasyonunu açtığınızda her satırda karşınıza çıkar ve kulağa fizikten fırlamış ağır bir kavram gibi gelir. Oysa işin özü gayet sade: bir tensor, belirli bir shape'e (boyut yapısına) sahip bir sayı dizisidir, hepsi bu. Aşağıda bu merdiveni adım adım çıkacak, bir de şunu göreceğiz: bütün derin öğrenme aslında sayıları doğru şekiller arasında gezdirmekten ibaret.

Skalerden tensöre: bir merdiven

Tek bir tanımı ezberlemek yerine bunu, boyut sayısına göre yükselen bir merdiven gibi düşünün; çok daha sağlam bir sezgi oturur.

En altta skaler vardır: tek bir sayı, örneğin learning rate olarak kullandığınız 0.001. Bir üst basamak vektör, yani sıralı bir sayı listesi; bir kelimeyi temsil eden embedding bunun tipik örneği. Üçüncü basamakta matris var: satır ve sütunlardan oluşan bir tablo; bir sinir ağı katmanının ağırlıkları çoğunlukla bu biçimde. Tensor ise bütün bunların ortak adı: kaç boyutu olursa olsun, sayıların düzenli bir ızgarada dizilmesi.

KavramBoyutShape örneğiTipik kullanım
Skaler0()learning rate, loss
Vektör1(n,)embedding, bias
Matris2(m, n)ağırlık katmanı
TensorN(a, b, c, …)görüntü batch'i, dizi

Somut bir örnek bu soyutlamayı yere indirir: 224×224 çözünürlükteki 32 RGB görüntüden oluşan bir batch, shape'i (32, 3, 224, 224) olan dört boyutlu bir tensördür. Buradaki sayılar sırasıyla batch büyüklüğünü, kanal sayısını, yüksekliği ve genişliği gösterir. Yani tensor, "çok boyutlu sayı kabı" demenin biraz daha resmî bir yolu.

Asıl kahraman: shape

Tensörlerle çalışırken kafanızda sürekli canlı tutmanız gereken şey, içindeki sayıların değerleri değil shape'idir. Çünkü derin öğrenmedeki işlemlerin neredeyse hepsi, tensörleri belirli kurallara göre yeniden şekillendirmek, çarpmak ve toplamaktan ibaret. Bir modelin "çalışması" da büyük ölçüde shape'lerin birbirine oturması demek.

İki tensörü birbirine bağlayan en temel işlem matris çarpımıdır ve bu işlem yalnızca iç boyutlar uyuştuğunda tanımlıdır: (m, k) boyutlu bir matrisi (k, n) boyutlu bir matrisle çarptığınızda sonuç (m, n) olur; ortadaki k'ların eşleşmesi şarttır. Bir de farklı shape'lerdeki tensörleri otomatik olarak genişletip işleme sokan broadcasting kuralları vardır; ileride ayrı bir yazıda ele alacağımız bu mekanizma, kodun pek çok yerinde sessizce devreye girer.

Neden her şeyin dili lineer cebir

Bir sinir ağı katmanını en yalın hâliyle yazdığımızda karşımıza bir matris çarpımı ile ona eklenen bir bias terimi çıkar:

y=Wx+b\mathbf{y} = W\mathbf{x} + \mathbf{b}

Burada WW öğrenilen ağırlıkları, x\mathbf{x} girdiyi, b\mathbf{b} bias'ı, y\mathbf{y} de katmanın çıktısını gösterir. Tek başına bu ifade yalnızca doğrusal bir dönüşüm; asıl gücünü, bu katmanları üst üste dizip aralarına doğrusal olmayan bir fonksiyon (non-linearity) koyduğumuzda kazanır. "Derin" sözcüğü de işte bu üst üste yığılan katmanlardan gelir.

Aşağıdaki örnek, dört elemanlı bir girdiyi üç elemanlı bir çıktıya dönüştüren tek bir katmanı gösteriyor:

import torch
 
x = torch.randn(4)        # girdi vektörü, shape (4,)
W = torch.randn(3, 4)     # ağırlıklar, shape (3, 4)
b = torch.randn(3)        # bias, shape (3,)
 
y = W @ x + b             # çıktı vektörü, shape (3,)
print(y.shape)            # torch.Size([3])

Buradaki W @ x ifadesi (3, 4) ile (4,)'ü çarpıp (3,) üretir; işlemin tanımlı olmasının tek koşulu, iç boyutların, yani iki taraftaki 4'lerin eşleşmesidir. Bias'ı eklediğimizde shape değişmez, yalnızca her bileşene bir kayma uygulanır. Sadeleştirilmiş hâliyle bütün derin öğrenme, bu adımın doğru shape'ler ve uygun non-linearity'lerle tekrar tekrar uygulanmasıdır; geriye kalan iş, WW ve b\mathbf{b} için iyi değerleri bulmaktır, onu da gradient descent üstlenir.

Sayıların ötesinde: geometrik sezgi

Lineer cebiri yalnızca bir aritmetik aracı olarak görmek, işin yarısını kaçırmaktır. Bir vektörü uzayda bir nokta ya da bir yön gibi düşünebilirsiniz; bir matrisi ise bu uzayı esneten, döndüren ya da ölçekleyen bir dönüşüm gibi. WW ile çarpmak, girdiyi yeni bir uzaya taşımak demektir; sinir ağının her katmanı, veriyi sınıfların daha kolay ayrılabileceği bir temsile doğru biraz daha iter. Bu geometrik bakış, ileride attention ya da embedding gibi konulara geldiğimizde "benzerlik" ve "uzaklık" kavramlarını çok daha doğal kılacak.

Sık düşülen tuzaklar

Pratikte karşılaşacağınız hataların önemli bir kısmı kavramsal değildir; kılık değiştirmiş birer shape uyuşmazlığıdır. Bir tensörün satır mı yoksa sütun vektörü mü olduğunu karıştırmak, transpoze almayı unutmak, batch boyutunu yanlış konuma koymak; hepsi aynı sınıf hataya çıkar. Bu yüzden geliştirirken en faydalı alışkanlık, kodun kritik yerlerine print(x.shape) satırları serpiştirip her adımda boyutların beklediğiniz gibi olduğunu kontrol etmektir. Bu basit refleks, saatler sürebilecek hata ayıklamayı çoğu zaman tek bakışta bitirir.

Buradan nereye

Tensörün ne olduğunu ve bir katmanın neden bir matris çarpımından ibaret olduğunu gördük. Akla gelen bir sonraki soru şu: model bu ağırlıkların "iyi" değerlerini gerçekte nasıl buluyor? Yanıt, derin öğrenmenin kalbindeki optimizasyon döngüsünde, yani gradient descent'te. Bir sonraki yazıda tam olarak onu, yine sıfırdan ele alacağız.

okunma

Yeni makale yayınlandığında haberiniz olsun ister misiniz?

Yeni bir yazı yayınlandığında size e-posta gelsin. Dilediğiniz an iptal edebilirsiniz.

Yorumlar

Benzer makaleler