使用三个神经元实现两输入XOR有时不起作用

时间:2019-07-06 13:13:48

标签: python keras xor

我正在尝试使用三个神经元来获得两个输入的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)

0 个答案:

没有答案