首页 文章

Keras的多级多标签分类

提问于
浏览
1

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

Final output layer

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

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

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

问题:此设置不会减少损失 . 但是,如果我单独训练每项任务,我会有低损失和高准确度 . 那可能是什么问题呢?

1 回答

  • 0

    要执行 multilabel categorical classification (其中每个示例可以有多个类),请使用Dense图层结束图层堆栈,其中单位数等于类的数量和sigmoid激活,并使用binary_crossentropy作为丢失 . 你的目标应该是k-hot编码的 .

    关于多输出模型,培训这样的模型需要能够 specify different loss functions for different heads of the network requiring a different training procedure.

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

相关问题