💫
Derin Öğrenme
  • 💫Derin Öğrenme Notları
  • 🚀English Version
  • 🦋Projeye Katkıda Bulunma
  • 💼Kullanışlı Araçlar
  • 💎Yapay Sinir Ağları Kavramları
    • 🌱Giriş
    • 🔎Esas Problem
    • 👷‍♀️ Yapay Sinir Ağlarının Uygulanması Üzerine Notlar
    • 📚Yapay Sinir Ağlarının Kavramları
    • 💥Yapay Sinir Ağlarında Aktivasyon Fonksiyonları
    • 🎈NN Uygulama İp Uçları
    • 👩‍🔧 NN Düzenlileştirme (Regularization)
    • ✨Optimizasyon Algoritmaları
    • 🎨Softmax Regression
    • 🏃‍♀️ Tensorflow'a Hızlı Giriş
    • 👩‍💻 Yapay Sinir Ağlarıyla ilgili Pyhton Kod Parçaları
  • 🙋‍♀️ Yapay Sinir Ağları ile Derin Öğrenme'nin Hello World'u
    • 🌱Giriş
    • 🌐Tarayıcıda CNNler
  • 🚪Bilgisayar Görüşüne Giriş
    • 🌱Giriş
  • 🚩Evrişimli Sinir Ağları Kavramları
    • 🌱Giriş
    • 📌Evrişimli Sinir Ağları ile İlgili Genel Kavramlar
    • 🌟Evrişimli Sinir Ağları Gelişmiş Kavramları
    • 👀Evrişimli Sinir Ağlarının Görselleştirilmesi
    • 👵Klasik Evrişimli Sinir Ağları
    • ✨CNN'leri Kurmak İçin Diğer Yaklaşımlar
    • 🕸️CNN'lerin Popüler Uygulamaları
  • 👩‍💻 CNN'ler Üzerinde Kodlar ve Notlar
    • 🌱Giriş
  • 💄Derin Öğrenmenin Popüler Stratejileri
    • 🌱Giriş
    • 🚙Öğrenme Aktarması (Transfer Learning)
    • 📚Derin Öğrenmede Diğer Stratejiler
  • 🤡Resim Artırma (Image Augmentation)
    • 🌱Giriş
  • 🤸‍♀️ Uygulamalı Makine Öğrenmesi Üzerine Notlar
    • 🌱Giriş
    • 👩‍🔧 Makine Öğrenimi Projelerinin Yapılandırılması Üzerine Notlar
    • 👩‍🏫 Uygulama Talimatları
  • 🕵️‍♀️ Obje Algılama Temelleri
    • 🌱Giriş
    • ⭕Bölge Tabanlı (Region-Based) CNN'ler
    • 🤳SSD ve YOLO
    • 🤖TensorFlow Object Detection API
  • ➰Derin Öğrenmede Dizi Modelleri
    • 🌱Giriş
    • 📚Dizi Modellerinin Genel Kavramları
    • 🔄Tekrarlayan Sinir Ağları (RNN)
    • 🌌RNN'deki Vanishing Gradients
    • 🌚Kelime Gösterimi
    • 💬NLP Hakkında Karışık Bilgiler
  • 📕Proje Sözlüğü
  • 📚Faydalı PDF'ler
  • 👀Hızlı Görsel Bilgiler
Powered by GitBook
On this page
  • 📚 Terimler
  • 🔩 Vektörleştirme (Vectorization)
  • ➕ Avantajlar
  • 👀 Görselleştirme
  • 👩‍💻 Kod Örnekleri:
  • 👩‍💻 Numpy'de Desteklenen Yaygın İşlemler
  • 💉 Yayma
  • 👀 Görselleştirme
  • 👩‍💻 Kod Örnekleri
  • 1️⃣ Rank-1 Dizisi
  • 👩‍💻 Kod Örneği
  • 🤔 Neden Rank-1 dizilerinin kullanılmaması tavsiye edilir?
  • 🌞 Yazının Aslı
  • 🧐 Referanslar

Was this helpful?

Export as PDF
  1. Yapay Sinir Ağları Kavramları

👷‍♀️ Yapay Sinir Ağlarının Uygulanması Üzerine Notlar

PreviousEsas ProblemNextYapay Sinir Ağlarının Kavramları

Last updated 3 years ago

Was this helpful?

📚 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:

import numpy as np
array1 = np.random.rand(1000)
array2 = np.random.rand(1000)

# Vektorize edilmeyen versiyon
result=0
for i in range(len(array1)):
  result += array1[i] * array2[i]
# result: 244.4311

# Vektorize edilen versiyon
v_result = np.dot(array1, array2)
# v_result: 244.4311

📈 Bir dizinin (veya matrisin) her elemanına üstel işlem uygulanması

array = np.random.rand(1000)
exp = np.exp(array)

🚀 Sigmoid Fonksiyonunun Vektörleştirilmiş Versiyonu

array = np.random.rand(1000)
sigmoid = 1 / (1 + np.exp(-array))

👩‍💻 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

a = np.array([[0, 1, 2], 
              [5, 6, 7]] )
b = np.array([1, 2, 3])
print(a + b)

# Output: [[ 1  3  5]
#          [ 6  8 10]]

➖ Bir matristen 'a' skalar çıkartma

a = np.array( [[0, 1, 2], 
               [5, 6, 7]] )
c = 2
print(a - c)
# Output: [[-2 -1  0]
#          [ 3  4  5]]

1️⃣ Rank-1 Dizisi

👩‍💻 Kod Örneği

x = np.random.rand(5)
print('shape:', x.shape, 'rank:', x.ndim)

# Output: shape: (5,) rank: 1

y = np.random.rand(5, 1)
print('shape:', y.shape, 'rank:', y.ndim)

# Output: shape: (5, 1) rank: 2

z = np.random.rand(5, 2, 2)
print('shape:', z.shape, 'rank:', z.ndim)

# Output: shape: (5, 2, 2) rank: 3

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:

a = np.random.rand(4)
b = np.random.rand(4)
print(a)
print(a.T)
print(np.dot(a,b))

# Output
# [0.40464616 0.46423665 0.26137661 0.07694073]
# [0.40464616 0.46423665 0.26137661 0.07694073]
# 0.354194202098512

Rank-2 dizilerindeki dot işlemi:

a = np.random.rand(4,1)
b = np.random.rand(4,1)
print(a)
print(np.dot(a,b))

# Output
# [[0.68418713]
# [0.53098868]
# [0.16929882]
# [0.62586001]]
# [[0.68418713 0.53098868 0.16929882 0.62586001]]
# ERROR: shapes (4,1) and (4,1) not aligned: 1 (dim 1) != 4 (dim 0)

Ö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

💎
Burada 🐾
Official Documentation of Broadcasting in NumPy