## # Пример перцептрона с его обучением ## 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)