该程序运行良好:
(array([0, 0]), array([ 2.55772644e-08]))
(array([0, 1]), array([ 0.99649732]))
(array([1, 0]), array([ 0.99677086]))
(array([1, 1]), array([-0.00028738]))
神经网络学习 XOR,默认使用 tanh 作为激活函数。但是,在我将激活函数更改为“sigmoid”之后
nn = NeuralNetwork([2,2,1], 'sigmoid')
现在程序输出:
epochs: 0
...
epochs: 90000
(array([0, 0]), array([ 0.45784467]))
(array([0, 1]), array([ 0.48245772]))
(array([1, 0]), array([ 0.47365194]))
(array([1, 1]), array([ 0.48966856]))
4 个输入的输出均接近 0.5。结果表明神经网络(具有 sigmoid 函数)没有学习 XOR。
我期待程序会输出:
- ~0 表示 (0, 0) 和 (1, 1)
- ~1 表示 (0, 1) 和 (1, 0)
有人可以解释为什么这个带有 sigmoid 的例子不适用于 XOR 吗?