0Pricing
Pandas & NumPy Academy · Ders

np.matmul ve @ ile Matris Çarpımı

Matrisleri np.matmul ve @ işleciyle doğru biçimde çarpın; eleman bazlı * işlemini gerçek matris çarpımından ayırt edin.

np.matmul ve @ ile Matris Çarpımı, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.

Matris Çarpımı Neden Önemlidir

Matris çarpımı, veri bilimi ve makine öğrenmesinin merkezinde yer alır. Sinir ağlarının, boyut indirgeme işlemlerinin ve doğrusal dönüşümlerin temelini oluşturur. Python'da NumPy, matrisleri çarpmak için iki anlaşılır yol sunar: np.matmul() işlevi ve Python 3.5 ile sunulan @ işleci. Her ikisi de hızlıdır, vektörleştirilmiştir ve iç içe Python döngülerinden çok daha verimlidir.

Matris Çarpımının Kuralları

İki matris olan A ve B için A @ B çarpımı yalnızca A'daki sütun sayısı B'deki satır sayısına eşitse geçerlidir. A'nın şekli (m, n) ve B'nin şekli (n, k) ise sonuç (m, k) şeklindedir. İç boyut kısıtı adı verilen bu kural, hangi NumPy işlevini kullandığınızdan bağımsız olarak geçerlidir.

import numpy as np
A = np.array([[1, 2], [3, 4]])   # shape (2, 2)
B = np.array([[5, 6], [7, 8]])   # shape (2, 2)
C = A @ B
print(C)  # [[19 22] [43 50]]

np.matmul ve @ İşleci

np.matmul(A, B) ve A @ B, 2 boyutlu diziler için aynı sonuçları üretir. @ işleci yalnızca sözdizimsel kolaylıktır — perde arkasında __matmul__ çağrılır ve NumPy bunu aynı C düzeyi BLAS yordamıyla uygular. Okunabilirlik için günlük kodlarda @ kullanın; işlevi çağrılabilir bir nesne olarak iletmek veya özel durumları açıkça ele almak istediğinizde np.matmul kullanın.

import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.matmul(A, B))   # same as A @ B
print(A @ B)             # same result

@, * ve np.dot Arasındaki Farklar

NumPy'de birbiriyle kolayca karıştırılabilen üç çarpma işlevi vardır. A * B, eleman bazında çarpmadır (Hadamard çarpımı). np.dot(A, B), 2 boyutlu dizilerde np.matmul gibi davranır; ancak daha yüksek boyutlarda farklı anlamlara sahiptir. A @ B kesin olarak matris çarpımıdır ve matematiksel tanımı tam olarak izler — matris işlemleri için np.dot yerine bunu tercih edin.

import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print('element-wise:', A * B)    # [[5 12] [21 32]]
print('matmul:', A @ B)          # [[19 22] [43 50]]

Matris Çarpımı Değişmeli Değildir

Skaler çarpımın aksine, matris çarpımı değişmeli değildir: A @ B genellikle B @ A işleminden farklıdır. Şekiller her iki yönde de uyumlu olmayabilir. Dönüşümler yazarken bu önemlidir; işlemlerin sırası sonucu değiştirir. Hangi matrisin solda, hangisinin sağda olduğunu her zaman takip edin.

import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[0, 1], [1, 0]])
print('A @ B:', A @ B)   # [[2 1] [4 3]]
print('B @ A:', B @ A)   # [[3 4] [1 2]]  -- different!

Toplu Matris Çarpımı

Dizileriniz ikiden fazla boyuta sahip olduğunda np.matmul ve @, fazladan baştaki boyutları toplu işlem boyutları olarak ele alır ve matrisleri paralel olarak çarpar. Örneğin, (32, 3, 4) şeklindeki bir dizi ile (32, 4, 5) şeklindeki bir dizinin çarpımı, (32, 3, 5) şeklinde bir sonuç üretir — aynı anda gerçekleştirilen 32 bağımsız 3×4 @ 4×5 çarpımı. Derin öğrenme çerçeveleri mini yığınları verimli şekilde bu yöntemle işler.

import numpy as np
batch_A = np.random.rand(32, 3, 4)
batch_B = np.random.rand(32, 4, 5)
result = batch_A @ batch_B
print(result.shape)  # (32, 3, 5)

Matris-Vektör Çarpımı

Yaygın bir özel durum, bir matrisin bir vektörle çarpılmasıdır. A matrisinin şekli (m, n) ve v uzunluğu n olan 1 boyutlu bir dizi ise A @ v, uzunluğu m olan 1 boyutlu bir dizi üretir. NumPy şekil hizalamasını otomatik olarak ele alır — v'yi sütun vektörüne dönüştürmeniz gerekmez. Bu örüntü her yerde görülür: doğrusal regresyonda ağırlıkların uygulanmasında, özelliklerin izdüşümünde ve her satır için nokta çarpımlarının eşzamanlı hesaplanmasında.

import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]])  # (2, 3)
v = np.array([1, 0, -1])              # (3,)
print(A @ v)   # [1-3, 4-6] = [-2, -2]

Performans: @ ve Python Döngüleri

NumPy matris çarpımı, optimize edilmiş BLAS/LAPACK yordamlarını çağırır ve derlenmiş C kodunda çalışır. Aynı işlemi uygulayan saf Python iç içe döngüsü, büyük matrislerde genellikle 100–1000 kat daha yavaştır. Bir veri işleme hattında özellik dönüşümleri, PCA izdüşümleri veya ağırlık güncellemeleri gibi tekrarlanan matris çarpımlarına ihtiyaç duyduğunuzda her zaman @ ya da np.matmul kullanın ve iç döngüyü kendiniz asla uygulamayın.

import numpy as np, time
A = np.random.rand(500, 500)
B = np.random.rand(500, 500)
t0 = time.time()
C = A @ B
print(f'NumPy: {(time.time()-t0)*1000:.1f} ms')  # single-digit ms

Birden Çok Matris Çarpımını Zincirleme

Birden çok @ işlemini tek bir ifadede zincirleyebilirsiniz: A @ B @ C, soldan sağa değerlendirilir. NumPy, MATLAB'ın mtimes işlevinin aksine çarpma sırasını otomatik olarak iyileştirmez; bu nedenle matrislerin boyutları çok farklıysa sıra hız açısından önem taşıyabilir. Üç veya daha fazla matris için en verimli eşleştirmeyi otomatik olarak seçen np.linalg.multi_dot([A, B, C]) işlevini kullanmayı düşünün.

import numpy as np
A = np.random.rand(100, 20)
B = np.random.rand(20, 50)
C = np.random.rand(50, 10)
result = np.linalg.multi_dot([A, B, C])
print(result.shape)  # (100, 10)

Yaygın Şekil Hataları ve Çözüm Yolları

Matris çarpımında en yaygın hata şekil uyuşmazlığıdır: ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0. Çözüm olarak şekilleri A.shape ile denetleyin ve iç boyutların uyuştuğundan emin olun. (n,) şeklindeki bir satır vektörünün sütun vektörü (n, 1) olarak ele alınması gerekiyorsa v.reshape(-1, 1) kullanın. Transpozu gerekiyorsa A.T kullanın.

import numpy as np
A = np.ones((3, 4))
B = np.ones((3, 4))  # wrong -- inner dims 4 != 3
try:
    A @ B
except ValueError as e:
    print('Error:', e)
print('Fix:', (A @ B.T).shape)  # (3, 3)

Uygulamalı Örnek: Özellik Dönüşümü

Tipik bir veri bilimi kullanımında, şekli (n_samples, n_features) olan bir X veri kümeniz ve şekli (n_features, n_outputs) olan bir W ağırlık matrisiniz vardır. X @ W matris çarpımı, her örneğe aynı anda bir doğrusal dönüşüm uygulayarak (n_samples, n_outputs) şeklinde bir sonuç üretir. Bu, bir sinir ağındaki doğrusal katmanın ve doğrusal regresyon tahmininin temel hesaplamasıdır.

import numpy as np
n_samples, n_features, n_outputs = 200, 10, 3
X = np.random.rand(n_samples, n_features)
W = np.random.rand(n_features, n_outputs)
b = np.zeros(n_outputs)
predictions = X @ W + b   # shape (200, 3)
print(predictions.shape)

Hızlı Kontrol

NumPy matris çarpımı konusunu anlayıp anlamadığınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz: np.matmul ve @, eleman bazında değil gerçek matris çarpımı uygular, iki matrisin iç boyutları eşleşmelidir ve @, baştaki boyutlar üzerinde toplu çarpımı destekler. Sırada, bir matrisin 'geri alınıp alınamayacağını' gösteren işlemler olan determinantları, ters matrisleri ve transpozları inceleyeceğiz.

Sıkça Sorulan Sorular

“np.matmul ve @ ile Matris Çarpımı” dersi ücretsiz mi?

Evet — “np.matmul ve @ ile Matris Çarpımı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.

“np.matmul ve @ ile Matris Çarpımı” dersinde ne öğreneceğim?

Matrisleri np.matmul ve @ işleciyle doğru biçimde çarpın; eleman bazlı * işlemini gerçek matris çarpımından ayırt edin. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“np.matmul ve @ ile Matris Çarpımı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. np.matmul ve @ ile Matris Çarpımı
  2. Determinantlar, Ters Matrisler ve Transpozlar
  3. Doğrusal Sistemleri Çözme
  4. Özdeğerler ve SVD'ye Genel Bakış
← Pandas & NumPy Academy Sayfasına Dön