【问题标题】:Why is this XOR neural network having 2 outputs?为什么这个 XOR 神经网络有 2 个输出?
【发布时间】:2017-10-11 03:28:31
【问题描述】:

通常,一个解决异或的简单神经网络应该有 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} 的形状?

【问题讨论】:

  • 他在顶部的 cmets 中进行了解释。 (这是另一个问题,这种解释在形式数学方面有多好)
  • 对于所有未来的问题,JFYI,Gitter 频道上有一个活跃的开发社区:gitter.im/deeplearning4j/deeplearning4j
  • 是的,那个聊天室很有趣,有人帮我教了如何匹配激活函数和损失函数

标签: neural-network artificial-intelligence deep-learning xor deeplearning4j


【解决方案1】:

这样想可能会有所帮助:

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

【讨论】:

    【解决方案2】:

    这称为一次热编码。这个想法是每个班级有一个神经元。每个神经元给出该类的概率。

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

    【讨论】:

    • 我发现只有当我们没有太多要分类的类时,one-hot encoding 才好
    • 是的,我不知道他为什么也使用了 4 个隐藏神经元,我改成了 2 个,它仍然可以正常工作!
    • 因为输出层中的单热神经元太多了,我不知道,但是如果我们需要对那么多神经元进行分类怎么办
    • @johnlowvale 我从未见过其他任何东西。我所知道的最大类数是 ImageNet 的 1000 个。 One-hot 编码在那里没有问题。
    • 这也让我有些困惑。前两个数字在 4 x 2 表中的位置。第三个数字(单独关闭)是要放置在该坐标处的值。
    【解决方案3】:

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

    【讨论】:

    • 我在 deeplearning4j 聊天室问了一个人,他说是因为输出层的 softmax 激活函数
    猜你喜欢
    • 2018-03-23
    • 1970-01-01
    • 2017-11-21
    • 2023-03-23
    • 2014-05-09
    • 2018-06-10
    • 2015-07-21
    • 2023-03-24
    • 2020-08-14
    相关资源
    最近更新 更多