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.
- Giriş değerleri ya da giriş katmanı
- Ağırlıklar ve sapma değeri
- Net toplam
- 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.
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.
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.
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]:
In [5]:
inputs = np.array([0, 1])
perceptron.predict(inputs)
Out[5]:
In [6]:
inputs = np.array([0, 0])
perceptron.predict(inputs)
Out[6]:
In [7]:
inputs = np.array([1,0])
perceptron.predict(inputs)
Out[7]:
In [8]:
perceptron.weights
Out[8]:
In [9]:
perceptron.threshold
Out[9]:
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
Yorum Gönder