
XOR Mantık Kapısını Grafikte göstermek için aşağıdaki kodu yazıyoruz.
import matplotlib.pyplot as plt x=[0,0,1,1] y=[0,1,0,1] plt.scatter(x,y,marker="*",color="black",linewidths=3) plt.show()

Şimdi Sigmoid Aktivasyon fonksiyonunu tanımlayalım.
import math
import matplotlib.pyplot as plt
import numpy as np
def sigmoid(x):
a = []
for i in x:
a.append(1/(1+math.exp(-i)))
return a
Sigmoid Aktivasyon fonksiyonunu tanımladıktan sonra grafik için oluşturulacak alanları belirleyelim.
x = np.arange(-3., 3., 0.1) sig = sigmoid(x)
Sigmoid Aktivasyon fonksiyonunu grafikte çizelim.
line, = plt.plot(x,sig, label='Sigmoid') plt.legend(handles=[line]) plt.axhline(y=0, color='k') plt.axvline(x=0, color='k') plt.show()

Şimdi de kütüphane ve sigmoid fonksiyonu ve türevini tanımlayalım.
import numpy as np
def sigmoid (x):
return 1/(1 + np.exp(-x))
def sigmoid_turev(x):
return x * (1 - x)
import numpy as np
def sigmoid (x):
return 1/(1 + np.exp(-x))
def sigmoid_derivative(x):
return x * (1 - x)
Bu işlemlerden sonra giriş verisetlerini tanımlayalım.
inputs = np.array([[0,0],[0,1],[1,0],[1,1]]) beklenen_cikti = np.array([[0],[1],[1],[0]]) dongu = 200000 lr = 0.1 girisNoronkatmanlari, gizliNoronkatmanlari, cikisNoronkatmanlari = 2,2,1
Şimdi de ağırlık ve bias değerlerini belirleyelim.
gizli_agirliklar = np.random.uniform(size=(girisNoronkatmanlari,gizliNoronkatmanlari))
gizli_bias =np.random.uniform(size=(1,gizliNoronkatmanlari))
cikti_agirliklari = np.random.uniform(size=(gizliNoronkatmanlari,cikisNoronkatmanlari))
cikti_bias = np.random.uniform(size=(1,cikisNoronkatmanlari))
print("İlk gizli ağırlıklar: ",end='')
print(*gizli_agirliklar)
print("İlk gizli bias değerleri: ",end='')
print(*gizli_bias)
print("Başlangıç çıkış ağırlıkları: ",end='')
print(*cikti_agirliklari)
print("İlk çıktı biasları: ",end='')
print(*cikti_bias)

Eğitim algoritmasını yazalım
for _ in range(dongu):
#İleri Doğru Yayılım
gizli_katman_aktivasyon = np.dot(inputs,gizli_agirliklar)
gizli_katman_aktivasyon += gizli_bias
gizli_katman_cikis = sigmoid(gizli_katman_aktivasyon )
gizli_katman_cikis = np.dot(gizli_katman_cikis,cikti_agirliklari)
gizli_katman_cikis += cikti_bias
tahmin_edilen_cikti = sigmoid(gizli_katman_cikis)
#Geri Yayılım
hata = beklenen_cikti - tahmin_edilen_cikti
Tahmini_cikti = hata * sigmoid_derivative(tahmin_edilen_cikti)
gizli_katman_hata = Tahmini_cikti.dot(cikti_agirliklari.T)
Gizli_Katman = gizli_katman_hata * sigmoid_derivative(gizli_katman_cikis)
Ağırlıkları ve biasları güncelleyelim.
cikti_agirliklari += gizli_katman_cikis.T.dot(Tahmini_cikti) * lr cikti_bias += np.sum(Tahmini_cikti,axis=0,keepdims=True) * lr gizli_agirliklar += inputs.T.dot(Gizli_Katman) * lr gizli_bias += np.sum(Gizli_Katman,axis=0,keepdims=True) * lr
Son çıktıları ekrana yazdıralım.
print("Son gizli ağırlıklar: ",end='')
print(*gizli_agirliklar)
print("Son gizli bias: ",end='')
print(*gizli_bias)
print("Son çıktı ağırlıkları: ",end='')
print(*cikti_agirliklari)
print("Son çıktı bias: ",end='')
print(*cikti_bias)
