👷♀️ Yapay Sinir Ağlarının Uygulanması Üzerine Notlar
📚 Terimler
Terim | Açıklama |
👩🔧 Vektörleştirme | Python kodunu döngü kullanmadan hızlandırma yöntemi |
⚙ Yayma (Broadcasting) | Dizileri genişleterek Python kodunu daha hızlı çalıştırmak için başka bir yöntem |
🔢 Dizi Rankı | Bir dizinin sahip olduğu boyut sayısı |
1️⃣ Rank-1 Dizisi | Tek bir boyuta sahip bir dizi |
Bir skalar sıfır rank'a sahip sayılır ❗❕
🔩 Vektörleştirme (Vectorization)
Vektörleştirme, Python veya Matlab kodunu döngü kullanmadan hızlandırmak için kullanılır. Böyle bir fonksiyon kullanmak kodun çalışma süresini verimli bir şekilde en aza indirmeye yardımcı olabilir. Vektörlerin nokta çarpımı (dot product), vektörlerin dış çarpımı (outer products) ve Hadamard Çarpımı (element wise multiplication) gibi çeşitli işlemler vektörler üzerinden gerçekleştirilebilmektedir.
➕ Avantajlar
Daha hızlı (paralel işlemlere izin verir) 👨🔧
Daha basit ve daha okunabilir kod ✨
👀 Görselleştirme
👩💻 Kod Örnekleri:
İki dizinin nokta çarpımını bulma:
📈 Bir dizinin (veya matrisin) her elemanına üstel işlem uygulanması
🚀 Sigmoid Fonksiyonunun Vektörleştirilmiş Versiyonu
👩💻 Numpy'de Desteklenen Yaygın İşlemler
🤸♀️ Yaygın Tek Dizi Fonksiyonları
Dizideki her elemanın karekökünü alma
np.sqrt(x)
Dizinin tüm elemanlarının toplamını almak
np.sum(x)
Dizideki her bir elemanın mutlak değerini alma
np.abs(x)
Dizideki her elemana trigonometrik fonksiyonlar uygulama
np.sin(x)
,np.cos(x)
,np.tan(x)
Dizideki her bir eleman üzerine logaritmik fonksiyonlar uygulama
np.log(x)
,np.log10(x)
,np.log2(x)
🤸♂️ Yaygın Çoklu Dizi Fonksiyonları
Aritmetik işlemleri dizilerdeki karşılık gelen elemanlara uygulama
np.add(x, y)
,np.subtract(x, y)
,np.divide(x, y)
,np.multiply(x, y)
Dizideki karşılık gelen elemanlara kuvvet işlemi uygulama
np.power(x, y)
➰ Yaygın Dizili Sequence Fonksiyonlar
Bir dizinin ortalamasını bulma
np.mean(x)
Bir dizinin medyanını bulma
np.median(x)
Bir dizinin varyansını bulma
np.var(x)
Bir dizinin standart sapmasını bulma
np.std(x)
Bir dizinin maximum ve minimum değerini bulma
np.max(x)
,np.min(x)
Bir dizinin maximum ve minimum değerinin indisini bulma
np.argmax(x)
,np.argmin(x)
💉 Yayma
Aritmetik işlemler sırasında numpy'nin farklı boyutlardaki dizileri nasıl ele aldığını açıklar. Bazı kısıtlamalara bağlı olarak, daha küçük dizi daha büyük dizi boyunca yayınlanır, böylece uyumlu şekillere sahip olurlar.
Uygulamalı olarak:
Elimizde (m,n)
boyutundaki A matrisi olsun. (1,n)
boyutundaki B matrisi ile toplamak / çıkarmak / çarpmak / bölmek istiyorsak, B matrisi m
kez kopyalanacak, daha sonra istenen işlem gerçekleşecek.
Aynı şekilde: Elimizde (m,n)
boyutundaki A matrisi olsun. (m,1)
boyutundaki B matrisi ile toplamak / çıkarmak / çarpmak / bölmek istiyorsak, B matrisi n
kez kopyalanacak, daha sonra istenen işlem gerçekleşecek.
Uzun lafın kısası: Farklı boyutlardaki diziler (veya matrisler) toplanamaz, çıkartılamaz veya genel olarak aritmetik olarak kullanılamaz. Dolayısıyla, boyutları genişletmek bunu mümkün kılmanın bir yoludur, böylece uyumlu şekillere sahip olurlar.
👀 Görselleştirme
👩💻 Kod Örnekleri
(1,n) boyutundaki vektörü (2,n) boyutundaki matrise ekleme
➖ Bir matristen 'a' skalar çıkartma
1️⃣ Rank-1 Dizisi
👩💻 Kod Örneği
Rank-1 dizilerinin kullanılmaması tavsiye edilmektedir
🤔 Neden Rank-1 dizilerinin kullanılmaması tavsiye edilir?
Rank-1 Dizileri, bulunması ve düzeltilmesi zor olan hatalara neden olabilir, örneğin:
Rank-1 dizilerindeki dot işlemi:
Rank-2 dizilerindeki dot işlemi:
Özet: Kodlarımızı daha hatasız ve kolay hata ayıklamak için rank-1 dizilerini kullanmaktan kaçınmalıyız 🐛
🌞 Yazının Aslı
🧐 Referanslar
Last updated