Я пытаюсь использовать три нейрона, чтобы получить 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)