【问题标题】:Output layer for multi-label, multi-class classification?多标签、多类分类的输出层?
【发布时间】:2017-12-28 19:20:01
【问题描述】:

我正在寻找一种方法来实现输入的多个分类。指定了输出的数量,并且输出的类集可能相同也可能不同。样本属于每个类集的一个类。

我的问题是,目标数据和输出层应该是什么样的?可以使用哪些激活、损失和训练函数,该层应该如何连接到隐藏层?我不一定要寻找最佳解决方案,只是一个可行的解决方案。

我目前对可行的猜测是使目标数据成为多个连接的 one-hot 向量,并且输出层具有与向量数量一样多的 softmax 单元。我不知道这些层将如何与该解决方案连接,以及网络如何计算类集的大小。我认为标签 powerset 无法满足我的需求。

我认为 matlab patternnet 函数可以创建一个可以做到这一点的网络,但我不知道生成的网络是如何工作的。非常欢迎 TensorFlow 或 Keras 的代码。

【问题讨论】:

  • 您可以使用 sigmoid 代替 softmax 来进行多标签输出。

标签: tensorflow neural-network keras multilabel-classification multiclass-classification


【解决方案1】:

也许现在不是回答问题的好时机,但我正在研究多标签分类,刚刚找到了解决方案。 至于 Keras,有一个例子:

  • 目标标签:[1, 0, 0, 1, 0]
  • 输出层:Dense(5, activation='sigmoid')
  • 损失:'binary_crossentropy'

如果数据集足够大,这将很有效。

【讨论】:

  • 这是多标签,但不是多类。 OP 正在询问一个目标标签,例如:[0, 2, 0, 3, 1]。 Sigmoid 将您的输出压缩为 1,因此它不适用于多标签多类。
猜你喜欢
  • 2017-03-15
  • 2018-12-31
  • 2018-09-11
  • 2015-02-01
  • 2018-08-04
  • 1970-01-01
  • 2019-04-01
  • 2018-12-03
相关资源
最近更新 更多