Построение границы решения для нейронной сети с двумя слоями? - PullRequest
0 голосов
/ 28 января 2019

Итак, в настоящее время я создал нейронную сеть с одним слоем (я не знаю, назовите ли вы нейронную сеть или просто персептрон).Моя проблема в том, что я сейчас пытаюсь расширить это для двухслойной сети, и я хотел бы построить границу этого решения.Я сохраняю свои веса для первого слоя в $ W $ и веса второго слоя в $ V $.Код, который я использовал для персептрона, выглядит следующим образом:

def plotting(classA, classB, tot_class):
    w = perceptron2(X,t,100)
    print(w)
    area = np.pi*3
    plt.scatter(classA[:,0], classA[:,1], s = area, c='b', alpha=0.5)
    plt.scatter(classB[:,0], classB[:,1],s=area, c= 'r', alpha = 0.5)
    grid = np.linspace(np.amin(tot_class),np.amax(tot_class))
    y = []
    for x in grid:
        slope = -(w[0][0] / w[0][2]) / (w[0][0] / w[0][1])
        intercept = -w[0][0] / w[0][2]
        y.append((slope*x) + intercept)
    plt.plot(grid,y, color = 'black')
    plt.show()

Но давайте будем реальными, у меня не было бы никакой причины внедрять нейронную сеть, если бы я ожидал, что мой набор данных будет линейно разделим, поэтомуОчевидно, я не могу использовать уравнение для прямой линии, но как мне подойти к этому?Моей первой мыслью было нарисовать функцию, где моя цель равна 0 (то есть, с 50% вероятностью, что она будет квалифицирована как -1 или +1), но действительно ли я должен идти по этому пути?

1 Ответ

0 голосов
/ 28 января 2019

Одним из решений будет определение сетки по области вашего графика и заставление персептрона предсказывать каждое отдельное значение.Тогда вы могли бы просто построить все предсказания classA в одном цвете и предсказания classB в другом.Линия между двумя цветами является границей решения.

Посмотрите на этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...