Построение решения задачи границы с простой нейронной сетью - PullRequest
1 голос
/ 27 октября 2019

Я пытаюсь обучить очень простую нейронную сеть с одним персептроном, используя двумерный входной вектор (x1, x2).

Я реализовал то, что я думаю, является правильным обратным распространением ниже. Используя возвращенный весовой вектор, я получаю линию, которая находится далеко от границы принятия решения.

    def train_nn(self, training_set, labels):

        for _ in range(self.epochs):
            preds = np.dot(self.weights.T, training_set.T)
            z = sigmoid(preds)
            error = z - labels
            #back propogation - find derivative with respect to weights
            derror_dy = error
            dy_dz = sigmoid_deriv(preds)
            derr_dz = derror_dy * dy_dz
            derr_dweights = np.dot(training_set.T, derr_dz.T)
            dz_dweights = self.lr * derr_dweights
            self.weights -= dz_dweights        
        return self.weights

enter image description here

Я получаю правильную классификацию при выполнении прогноза с использованием весов.

enter image description here

Является ли неправильная граница из-за использования сигмоидальной функции? Или есть ошибка в моем расчете обратного распространения? Цени любую помощь!

...