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