Простая нейросеть для 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() 

Всегда получается график зеркально не правильный.

введите сюда описание изображения

Подскажите, что делать?


Ответы (0 шт):