【问题标题】:Number of outputs in dense softmax layer密集 softmax 层中的输出数量
【发布时间】:2020-07-07 04:22:42
【问题描述】:

我一直在通过 Coursera 课程进行额外练习,但遇到了一个我不明白的问题。
Link to Collab

就我处理 ML 神经网络问题而言,我一直被告知多类分类问题的输出层将是密集的,节点数等于类数。例如。狗、猫、马 - 3 类 = 3 个节点。

但是,在笔记本中,标签中有 5 个类,使用 len(label_tokenizer.word_index) 检查但使用 5 个节点我得到了糟糕的结果,并且模型在 6 个节点上正常工作。

谁能解释一下为什么会这样?我找不到任何解释这一点的在线示例。干杯!

【问题讨论】:

    标签: machine-learning text-classification multiclass-classification


    【解决方案1】:

    我想通了。具有分类交叉熵损失的密集层的输出期望标签/目标从零开始。例如:

    cat - 0
    dog - 1
    horse - 2
    

    在这种情况下,密集节点的数量为 3。
    但是,在collab中,标签是使用keras tokenizer生成的,它从1开始进行tokenize(因为padding通常是0)。

    label_tokenizer = Tokenizer()
    label_tokenizer.fit_on_texts(labels)
    # {'business': 2, 'entertainment': 5, 'politics': 3, 'sport': 1, 'tech': 4}
    

    这会导致一个奇怪的情况,如果我们有 5 个密集节点,我们的输出类别是 0-4,这与我们的预测 1-5 的标签不匹配。

    我通过重新运行所有标签减 1 的代码来凭经验证明了这一点,并且模型成功训练了 5 个密集节点,因为标签现在是 0-4。

    我怀疑使用标签 1-5 和 6 密集节点会起作用,因为模型只是知道标签 0 没有被使用并专注于 1-5。

    如果有人了解分类交叉熵的内部工作原理,请随时补充!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2023-03-15
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      相关资源
      最近更新 更多