Open xsa-dev opened 7 months ago
Этот пример демонстрирует, как создать простую нейронную сеть с back propagation для обучения на входных данных Х и ожидаемых результатах у.
import numpy as np # Входные данные X = np.array([[0,0,1],[0,1,1],[1,0,1],[1,1,1]]) # Ожидаемые результаты y = np.array([[0],[1],[1],[0]]) # Функция активации def sigmoid(x, deriv=False): if deriv: return x * (1 - x) return 1 / (1 + np.exp(-x)) # Инициализация весов np.random.seed(1) syn0 = 2 * np.random.random((3, 4)) - 1 syn1 = 2 * np.random.random((4, 1)) - 1 # Тренировка for j in range(60000): # forward propagation l0 = X l1 = sigmoid(np.dot(l0, syn0)) l2 = sigmoid(np.dot(l1, syn1)) # вычисление ошибки l2_error = y - l2 if (j % 10000) == 0: print("Error: " + str(np.mean(np.abs(l2_error)))) # ошибка в пропорциях l2_delta = l2_error * sigmoid(l2, True) # backpropagation l1_error = l2_delta.dot(syn1.T) l1_delta = l1_error * sigmoid(l1, True) # обновление весов syn1 += l1.T.dot(l2_delta) syn0 += l0.T.dot(l1_delta) print("Результат после тренировки:") print(l2)
Этот пример демонстрирует, как создать простую нейронную сеть с back propagation для обучения на входных данных Х и ожидаемых результатах у.