Keras的多级多标签分类

时间:2018-02-24 16:12:01

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

我正在尝试使用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 :(得分:2)

要执行多标签类别分类(每个样本可以具有多个类别),请在您的层堆栈中以密集层结束,密集层的单位数量等于类别数,并且需要进行S型激活,并使用binary_crossentropy作为损失。您的目标应经过k-hot编码。

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

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