Gistrec icon

Какой-то перцептрон

Gistrec | PRO | 01/28/18 10:32:29 AM UTC | 0 ⭐ | 590 👁️ | Never ⏰ | []
Python |

1.8 KB

|

None

|

0 👍

/

0 👎

##
# Пример перцептрона с его обучением
##
import numpy as np
 
# Текущий вес перцептрона
w = np.array([0,0,0])
 
# Примеры и правильные ответы для этих примеров
examples = np.array([[1,1,0.3], [1,0.4, 0.5], [0, 0.7, 0.8]])
 
 
def Target(ex):
    if ex[1] == 1 and ex[2] == 0.3:
        return 1
    elif ex[1] == 0.4 and ex[2] == 0.5:
        return 1
    elif ex[1] == 0.7 and ex[2] == 0.8:
        return 0
 
#
# Функция нужна для предсказания значения
#
def Predict(example):
    sum = example[0]*w[0]+example[1]*w[1]+example[2]*w[2]
    print("Пример ", example)
    print("Сумма ", sum)
    if (sum > 0):
        return 1
    else:
        return 0
#
# Алгоритм обучения
#
perfect = False
while not perfect:
    perfect = True
    for e in examples:
        # Для всех примеров, которые мы составили для тренировки
        # Если предсказанное значение для этого примера не равно
        # целевому значению этого примера, то нейрон что-то классифицировал
        # не идеально
        if Predict(e) != Target(e):
            perfect = False
            # В первом случае:
            # Если мы предсказали 0 и ошиблись,
            # то значит правильным ответом должна быть единица
            # т.е. мы должны прибавить к нашим весам значение нашего примера
            if Predict(e) == 0:
                w = w + e
            # В другом случае тоже самое, но наоборот
            else:
                w = w - e
            print("Новык веса ", w)
 
print("Финальные веса ", w)

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎