如何在Keras中实现多类多标签分类

时间:2020-07-05 22:34:09

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

假设我有一些输入输出,如下所示:

title = []
for text in texts:
    temp=[]
    for texData in text.find_all('h1', attrs = {'class': 'entry-title'}):
        temp.append(texData.get_text())
    title.append(temp)

输入始终为 0或1 ,而输出始终为 1或2或3

我该如何在keras中创建适合这些输入输出的神经网络?

input1  : [0 1 1 1 0 ... 1]
output1 : [1 2 2 3 ... 3 3 1 2 2]
...

我尝试将输出标准化为 0 0.5 1 ,但这没有帮助。

我尝试了各种损失函数

我尝试定义自定义损失函数

我尝试了许多网络体系结构

在大多数情况下,其acc约为0.09

从理论上讲,它只不过是二进制集,应该不难,但我找不到正确的方法

2 个答案:

答案 0 :(得分:0)

对于最后一个分类层,应对其进行softmax激活。此激活用于分类。不过,可能需要您对输出进行热编码。

答案 1 :(得分:0)

回答我自己的问题: 似乎有两种方法可以解决该问题:

1-丑陋的方法:

每个数字使用两个输出,因此 1 将变为 01 2 变为 10 和< strong> 3 变为 11 ,对于 00 ,您可以将其用于以上任何一项,甚至可以计算精度

2-不太丑陋的方法:

每个输出使用三个热编码,因此 1 变为 001 2 变为 010 3 变为 100

您还可以使用2D [x] [3] 输入,以便获得2D输出 [y] [3] ,但这似乎没有必要