Нейросеть всегда выдаёт 0.5

Только начал изучать нейронные сети. При решение задачи XOR столкнулся с проблемой, что мне всегда выдаёт 0.5

import random


def sigmoid(x):
    return 1 / (1 + math.exp(-x))

def dot(l1, l2):
    s = 0
    for i in range(len(l1)):
        s += l1[i] * l2[i]
    return s 


INPUTS = [[0, 0], [1, 1], [0, 1], [1, 0]]
OUTPUT = [0, 0, 1, 1]

weights = [random.random(), random.random()]

for _ in range(10_000):
    for i in range(len(INPUTS)):
        layer_input = INPUTS[i]
        output = sigmoid(dot(layer_input, weights))
        err = OUTPUT[i] - output
        delta = err * (output * (1 - output))
        grad1 = layer_input[0] * delta 
        grad2 = layer_input[1] * delta
        weights[0] += grad1 
        weights[1] += grad2 

print(sigmoid(dot([0, 0], weights))) # 0.5

Пытался с использованием numpy, тоже самое


Ответы (1 шт):

Автор решения: Lwich

Нужно было увеличить количество слоёв нейронов

→ Ссылка