为什么这个 XOR 神经网络有 2 个输出?

Why is this XOR neural network having 2 outputs?

一般来说,一个简单的异或神经网络应该有2个输入,2个隐藏层神经元,1个输出层神经元。

但是,下面的示例实现有 2 个输出神经元,我不明白:

https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/feedforward/xor/XorExample.java

为什么作者要放2个输出神经元?

编辑: 该示例的作者指出,他在隐藏层使用 4 个神经元,在输出层使用 2 个神经元。但我仍然不明白为什么,为什么形状是 {4,2} 而不是 {2,1}?

作者最后使用了评估 class(用于统计网络给出正确结果的频率)。此 class 每个 class 化需要一个神经元才能正常工作,即一个输出神经元用于 true,一个用于 false。

这叫做一个热编码。这个想法是每个 class 有一个神经元。每个神经元给出 class.

的概率

我不知道他为什么用4个隐藏神经元。 2 应该足够了(如果我没记错的话)。

这样想可能会有所帮助:

Training Set        Label Set

    0 | 1               0 | 1
0 | 0 | 0          0 |  0 | 1
1 | 1 | 0          1 |  1 | 0
2 | 0 | 1          2 |  1 | 0
3 | 1 | 1          3 |  0 | 1

因此训练集的 [[0,0], 0], [[0,1], 0] 等。

如果您使用的是两列标签集,01 对应于 truefalse

因此,[0,0] 正确映射到 false,[1,0] 正确映射到 true,等等

一篇稍加修改的不错的文章可以在这里找到:https://medium.com/autonomous-agents/how-to-teach-logic-to-your-neuralnetworks-116215c71a49