Image Processing Perceptron

IMAGE PROCESSING

PERCEPTRON 

Perceptron nedir? (Algılayıcı,Sensör)

Perceptron tek katmanlı bir sinir ağıdır ve  bunun çok katmanlı olanına Nöral Sinir Ağları denir.

Perceptron'un çalışma mantığı:

Perceptron doğrusal bir sınıflandırıcıdır (ikili). Ayrıca, denetimli öğrenmede de kullanılır. Verilen girdi verilerinin sınıflandırılmasına yardımcı olur. Bu girdi  verilerini kullanarak bize olası muhtemel en doğru çıktıyı verir.

Perceptron nasıl çalışır?

Hepimizin bildiği gibi normal bir sinir ağı şöyle görünür
Gördüğünüz gibi birden fazla katmanı var.Girdi her katmanda işlenerek sonuca ulaşır.

Perception 4 bölümden oluşur.

  1. Giriş değerleri ya da giriş katmanı
  2. Ağırlıklar ve sapma değeri
  3. Net toplam
  4. Aktivasyon fonksiyonu (çıktıyı veren işlem).

Sinir ağları da aynı mantıkla çalışır, bilgi katmanlarda işlenerek sonuca ulaşılır ve bu sonuç sinir ağında iletilir.
Perceptron (Sensör)

Çalışma mantığını biraz daha açarsak:

Algılayıcı aşağıda belirtilen, bu basit adımlar üzerinde çalışır.

        1-Tüm "x" girdileri, kendi ağırlık değerleriye "w" çarpılır.Ve bu çarpıma "k" diyelim.
5 adet x girdisini, ağırlıklarıyla çarpma.


       2-Çarpılan tüm değerleri toplayalım ve buna "Ağırlıklı toplam" diyelim.


Toplama ile ekleme


      3-Ağırlıklı toplamı Aktivasyon Fonksiyonuna uygulayalım.
      
            Örneğin:Ünite adımı Aktivasyon Fonksiyonu.
Ünite adımı Aktivasyon Fonksiyonu

Peki ağırlıklara ve sapmalara neden ihtiyacımız var?

Ağırlıklar düğümün gücünü gösterir.

Sapma değeri , Aktivasyon Fonksiyonunda  sapmayı yukarı ve aşağı kaydırmamıza olanak sağlar. (Aşağıdaki resmi incelersek daha kolay anlayabiliriz.)

Peki Aktivasyon Fonksiyonuna neden ihtiyacımız var?

Aktivasyon Fonksiyonu girdi değerlerini işleyerek (0,1) veya (-1,1) gibi değerlere eşler.  (Eğer daha ayrıntılı olarak incelemek isterseniz Buradan inceleyebilirsiniz.)

Perceptronu nerede kullanıyoruz?

Perceptron (sensör), genellikle verileri iki parçaya ayırmak için kullanılır.Bu nedenle ,Doğrusal İkili Sınıflandırıcı(Linear Binary Classifier) olarak da bilinir.


Aşağıda da Perception'un kod kullanımı var.


In [1]:
import numpy as np
In [2]:
class Perceptron(object):
    def __init__(self, no_of_inputs, threshold=100, learning_rate=0.01):
        self.threshold = threshold
        self.learning_rate = learning_rate
        self.weights = np.zeros(no_of_inputs + 1)
           
    def predict(self, inputs):
        summation = np.dot(inputs, self.weights[1:]) + self.weights[0]
        if summation > 0:
          activation = 1
        else:
          activation = 0            
        return activation

    def train(self, training_inputs, labels):
        for _ in range(self.threshold):
            for inputs, label in zip(training_inputs, labels):
                prediction = self.predict(inputs)
                self.weights[1:] += self.learning_rate * (label - prediction) * inputs
                self.weights[0] += self.learning_rate * (label - prediction)
In [3]:
import numpy as np
#from perceptron import Perceptron

training_inputs = []
training_inputs.append(np.array([1, 1]))
training_inputs.append(np.array([1, 0]))
training_inputs.append(np.array([0, 1]))
training_inputs.append(np.array([0, 0]))

#labels = np.array([1, 0, 0, 0]) #AND -> np.array[1,1]=or[1], np.array[1,0]=or[0], ...
labels = np.array([1,1,1, 0]) #OR -> np.array[1,1]=or[1], np.array[1,0]=or[1], ...

perceptron = Perceptron(2)
perceptron.train(training_inputs, labels)
In [4]:
inputs = np.array([1, 1])
perceptron.predict(inputs)
Out[4]:
1
In [5]:
inputs = np.array([0, 1])
perceptron.predict(inputs)
Out[5]:
1
In [6]:
inputs = np.array([0, 0])
perceptron.predict(inputs)
Out[6]:
0
In [7]:
inputs = np.array([1,0])
perceptron.predict(inputs)
Out[7]:
1
In [8]:
perceptron.weights
Out[8]:
array([0.  , 0.01, 0.01])

In [9]:
perceptron.threshold
Out[9]:
100

Eğer herhangi bir sorunuz varsa yorum kısmına yazabilirsiniz.Elimden geldiğince yardımcı olmaya çalışırım. Umarım yardımcı olmuştur.




    





Yorumlar

Bu blogdaki popüler yayınlar

Convolutional Neural Network

Android Activity Lifecycle