【问题标题】:Multi-class multi-label classification in KerasKeras 中的多类多标签分类
【发布时间】:2018-08-04 12:17:51
【问题描述】:

我正在尝试使用 Keras 训练一个多任务多标签分类器。输出层是两个输出的一个分支。每个输出层的任务是预测其任务的类别。 y 向量是 OneHot 编码的。

我正在为我的数据使用自定义生成器,该生成器在 fit_generator 函数的列表中生成 y 数组

我在每一层都使用categorigal_crossentropy 损失函数

fork1.compile(loss={'O1': 'categorical_crossentropy', 'O2': 'categorical_crossentropy'},
              optimizer=optimizers.Adam(lr=0.001),
              metrics=['accuracy'])

问题:这种设置并没有减少损失。但是,如果我分别训练每个任务,我的损失低,准确率高。那么可能是什么问题呢?

【问题讨论】:

  • 您能否分享更多代码,例如您如何调用model.fit 以及您如何创建fork1,2?

标签: python tensorflow keras conv-neural-network keras-2


【解决方案1】:

要执行多标签分类(其中每个样本可以有多个类),请以具有等于类数的单元数和 sigmoid 激活的 Dense 层结束您的层堆栈,并使用 binary_crossentropy 作为损失。你的目标应该是 k-hot 编码的。

关于多输出模型,训练这样的模型需要能够为需要不同训练过程的网络的不同头部指定不同的损失函数。

您应该提供更多信息,以便清楚地表明您想要实现的目标。

【讨论】:

    猜你喜欢
    • 2019-02-26
    • 2019-05-21
    • 1970-01-01
    • 2020-10-26
    • 2018-07-07
    • 2019-01-06
    • 2018-07-02
    • 2018-06-23
    • 2020-04-25
    相关资源
    最近更新 更多