到目前为止,我们单标签模型的改动已经处理好了,接下来开始处理多标签的模型。训练数据我们之前处理的时候,就是按多标签的形式进行转化的,所以不需要再改了,接下来就直接改逻辑代码了。

那首先呢,我们还是要分析一下多标签,和单标签有哪些不同。第一个不同,就是目标值,单标签是一个值,多标签是一个序列,所以首先我们把目标值改成一个序列。

代码示例

1、标签id和序列互转

内容不可见,请联系管理员开通权限。

2、修改目标值

内容不可见,请联系管理员开通权限。

3、输出值修改

在输出结果上包一层 sigmoid,好处是将输出数值范围限制在 (0,1),方便做阈值判断。

内容不可见,请联系管理员开通权限。

其实到目前为止,模型已经可以开始训练了。但我们的目标值,是一个0多1少的序列,用 CrossEntropyLoss 来做 loss function 效果不好,我们需要对 0 的位置做适当降权,让模型预测出尽可能多的 1,这个过程相对比较复杂,我们放到下节课再介绍。

本文链接:http://ichenhua.cn/edu/note/564

版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!