Простая нейросеть для Python - график зеркально не правильный
Написал простую нейросеть с обратным распространением ошибки. На входе 2 нейрона, без скрытых слоев, на выходе один нейрон. Вот код.
import numpy as np
from matplotlib import pyplot as plt
import random
"""Входные данные"""
vhod = np.array([random.random(), random.random()])
vesa = np.array([random.random(), random.random()])
itog_fact = 0.4
skor_obuch = 0.1
"""Функция активации на выходе"""
def itog(vhod, vesa):
activ_output = (1 / (1 + (2.71**(-(vhod @ vesa)))))
return activ_output
"""Ошибка"""
e = itog_fact - itog(vhod, vesa)
"""Функция для пересчета весов"""
def vesa_new():
"""Oshibka neirona"""
mist_neir_3 = e * itog(vhod, vesa) * (1 - itog(vhod, vesa))
mist_neir_2 = mist_neir_3 * vhod[1] * vesa[1] * (1 - vhod[1])
mist_neir_1 = mist_neir_3 * vhod[0] * vesa[0] * (1 - vhod[0])
"""Korektirovka vesov"""
w_13 = vesa[0] + skor_obuch * mist_neir_3 * vhod[0]
w_23 = vesa[1] + skor_obuch * mist_neir_3 * vhod[1]
vesa_new = [w_13, w_23]
return vesa_new
"""Функция МСЕ"""
def mse():
mse = (itog_fact - itog(vhod, vesa_new()))**2
return mse
"""Цикл для обучения"""
i = 0
oshib = []
while i < 1000:
#print(itog(vhod, vesa_new()), mse())
e = e + itog(vhod, vesa) - itog(vhod, vesa_new())
oshib.append(mse())
i += 1
"""Визуализация"""
plt.plot(oshib)
plt.title("График уменьшения ошибки")
plt.ylabel('Значение ошибки')
plt.xlabel('Кол-во измерений')
plt.show()
Всегда получается график зеркально не правильный.
Подскажите, что делать?
