Реализация XOR с двумя входами с использованием трех нейронов иногда не работает - PullRequest
0 голосов
/ 06 июля 2019

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

Проблема может быть решена путем добавления большего количества нейронов или слоев.Но я хотел бы знать причины, по которым это происходит.

model.add(Dense(units=2, input_dim=2, use_bias=True))
model.add(Activation('sigmoid'))

model.add(Dense(units=1, input_dim=2, use_bias=True))
model.add(Activation('sigmoid'))

model.compile(loss='mse', optimizer=optimizers.SGD(lr=0.5))

model.fit(x, y, batch_size=1, epochs=2000, verbose=0)

(с теми же гиперпараметрами)

Correct:
0 XOR 0 = 0, output-> 0 (0.027640)
0 XOR 1 = 1, output-> 1 (0.969625)
1 XOR 0 = 1, output-> 1 (0.969891)
1 XOR 1 = 0, output-> 0 (0.038249)

Incorrect:
0 XOR 0 = 0, output-> 0 (0.041022)
0 XOR 1 = 1, output-> 1 (0.960491)
1 XOR 0 = 1, output-> 1 (0.500488)
1 XOR 1 = 0, output-> 1 (0.505612)
...