Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • PaddleHub
  • 合并请求
  • !732

P
PaddleHub
  • 项目概览

PaddlePaddle / PaddleHub
大约 2 年 前同步成功

通知 285
Star 12117
Fork 2091
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 200
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 4
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
PaddleHub
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 200
    • Issue 200
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 4
    • 合并请求 4
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板

解决MultiLabelClassifierTask中多标签输出结果中标签名顺序错误的问题 !732

  • Report abuse
!732 已关闭 7月 04, 2020 由 saxon_zh@saxon_zh 创建
#<User:0x00007f0e6b5f7730>
  • 概览 5
  • 提交 7
  • 变更 4

Created by: HawChang

BUG说明: MultiLabelClassifierTask的predict函数返回结果有误。期待的返回形式为[{label_1:value_1},{label_2:value_2},...,{label_n:value_n}],实际为[{label_x1:value_y1},{label_x2:value_y2},...,{label_xn:value_yn}],其中xi!=yi,即返回结果中的标签名称与实际该位置的标签不符。

BUG复现

  1. 切换目录到PaddleHub/demo/multi_label_classification/
  2. 运行run_classifier.sh得到finetune的toxic数据集多标签分类模型,该模型3epoch后auc可达98.28%。
  3. 修改predict.py文件中,最后预测的data=[["Would you both shut up, you don't run wikipedia, especially a stupid kid"]],该句在训练数据集中,其标注的多分类标签为"1,0,0,0,1,0",由toxic数据集的训练数据集的header可知其类别依次是"toxic,severe_toxic,obscene,threat,insult,identity_hate"。
  4. 运行run_predict.sh,可得到步骤3中句子的预测结果为[[{'severe_toxic': 1}, {'identity_hate': 0}, {'obscene': 0}, {'insult': 0}, {'threat': 1}, {'toxic': 0}]]。
  5. 通过分析我们可以看出。 a) 完全按预测结果来看,则该预测结果完全不准确,其预测该句子的标签为"severe_toxic"和"threat",而实际标注标签为"toxic"和"insult"。预测结果和标注标签按位置一一比较的化,其各位置的标签值和标注的一致,但其对应的标签名不一致。

问题分析: 返回结果中各标签的value顺序是与用来初始化reader的dataset中的label_list一致的,而返回结果中的表签名称的顺序不是。其问题在于MultiLabelClassifierTask重写_postprocessing函数时,其确定各位置标签名称时,使用的label_list的生成方法为list(self._base_data_reader.label_map.keys()),而显然字典的keys()不会保持标签顺序。

问题解决: 直接使用dataset中的label_list,该变量中标签名的顺序与输出结果各值对应的标签顺序一致。另外,在评估函数中_calculate_metrics也应该改为以label_list中的标签顺序为准。

指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/PaddleHub!732
Source branch: github/fork/HawChang/fix_multilabel_label_res_bug
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7