您的位置首页生活百科

Keras如何做multi-task learning?

Keras如何做multi-task learning?

的有关信息介绍如下:

Keras如何做multi-task learning?

最近在做FashionAI全球挑战赛-服饰属性标签识别 | 赛制介绍,就涉及到了 multi-task 的问题,一个服装进来可能是识别袖子长度,也有可能是识别裙子长度,还有可能是识别裤子长度,如图:

那么就需要多个输出,每个输出都是一个 softmax 分类器,在这个比赛里面,我们有如下几个分类,每个分类又有不同的类别数:

根据此变量,我们可以搭建出如下的模型:

关键代码就是这一句:

它遍历了 label_count 中的分类名称和对应的分类数量,分别搭建了不同神经元数量的分类器,并且为每个全连接层设置了对应的名称,方便之后训练的时候观察每个分类的训练情况。

那么可视化该模型即可输出下图:

模型看上去很复杂,实际上只是多个分类器接在了预训练模型 InceptionResNetV2 输出的特征而已。

对应的 label 则按照真实 label 设定,如果对应分类不存在,设置全0即可。比如有裤子就没有裙子,那么裙子对应的label就是全0。

只需要把真实类别对应的位置设置为1,其他地方设置为0即可。

训练的时候如果有很多全0的类别,可能会影响准确率的计算,可以在训练完以后,自行计算准确率,也可以自定义一个 metric 函数。

上面这个模型在测试集上拿到了 0.9701 的分数,证明了此方案的可行性。