{
  "id": 87246,
  "title": "Model design",
  "url": "/competitions/imet-2019-fgvc6/discussion/87246",
  "author_name": "",
  "post_date": "2019-03-29T20:23:08.169854400Z",
  "votes": null,
  "comment_count": 4,
  "views": 0,
  "content": "<p>How are you guys building your models output, as we can see the items can have on or more output, currently I build <a href=\"https://www.kaggle.com/dimitreoliveira/imet-collection-2019-eda-keras\">a model</a> that can output only 1 label, but to get better results we need this \"dynamic size\" output, I'm thinking to use something like multi-tasking models, or set a threshold on the output of a regular multiclass model, any ideas? </p>",
  "messages": [
    {
      "id": "503332",
      "postDate": "03/29/2019 20:23:08",
      "content": "<p>How are you guys building your models output, as we can see the items can have on or more output, currently I build <a href=\"https://www.kaggle.com/dimitreoliveira/imet-collection-2019-eda-keras\">a model</a> that can output only 1 label, but to get better results we need this \"dynamic size\" output, I'm thinking to use something like multi-tasking models, or set a threshold on the output of a regular multiclass model, any ideas? </p>",
      "rawMarkdown": "How are you guys building your models output, as we can see the items can have on or more output, currently I build [a model](https://www.kaggle.com/dimitreoliveira/imet-collection-2019-eda-keras) that can output only 1 label, but to get better results we need this \"dynamic size\" output, I'm thinking to use something like multi-tasking models, or set a threshold on the output of a regular multiclass model, any ideas?",
      "votes": null
    },
    {
      "id": "503338",
      "postDate": "03/29/2019 20:37:48",
      "content": "<p>Its a known task called \"multi-label classification\" when each object may belong to multiple classes.\nIn simple case you can just output probability for each class and use some threshold to derive actual labels.\nTraining that is simple as regular classification: cross-entropy for each class and take sum/mean after that.</p>",
      "rawMarkdown": "Its a known task called \"multi-label classification\" when each object may belong to multiple classes.\nIn simple case you can just output probability for each class and use some threshold to derive actual labels.\nTraining that is simple as regular classification: cross-entropy for each class and take sum/mean after that.",
      "votes": null
    },
    {
      "id": "503375",
      "postDate": "03/29/2019 22:07:03",
      "content": "<p>Oh I see it, thanks Vladislav, I'll do some research.</p>",
      "rawMarkdown": "Oh I see it, thanks Vladislav, I'll do some research.",
      "votes": null
    },
    {
      "id": "503448",
      "postDate": "03/30/2019 02:15:41",
      "content": "<p>I see people using softmax activation... This is weird since we're predicting multiclasses. It's better to use sigmoid in the last output layer and than try different threshold to decide what labels you need to keep. </p>",
      "rawMarkdown": "I see people using softmax activation... This is weird since we're predicting multiclasses. It's better to use sigmoid in the last output layer and than try different threshold to decide what labels you need to keep.",
      "votes": null
    },
    {
      "id": "503509",
      "postDate": "03/30/2019 05:19:09",
      "content": "<p>But one of the problem putting is like that since the \"positive\" is very sparse, then your network will most likely predict 0. I am not saying it is the best approach but if you are able to detect one of the labels with high precision then it is good to go for starter kernel.</p>",
      "rawMarkdown": "But one of the problem putting is like that since the \"positive\" is very sparse, then your network will most likely predict 0. I am not saying it is the best approach but if you are able to detect one of the labels with high precision then it is good to go for starter kernel.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 503338,
      "author_name": "vlad0922",
      "author_url": "",
      "post_date": "03/29/2019 20:37:48",
      "content": "<p>Its a known task called \"multi-label classification\" when each object may belong to multiple classes.\nIn simple case you can just output probability for each class and use some threshold to derive actual labels.\nTraining that is simple as regular classification: cross-entropy for each class and take sum/mean after that.</p>",
      "votes": null,
      "replies": [
        {
          "id": 503375,
          "author_name": "dimitreoliveira",
          "author_url": "",
          "post_date": "03/29/2019 22:07:03",
          "content": "<p>Oh I see it, thanks Vladislav, I'll do some research.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 503448,
      "author_name": "rinnqd",
      "author_url": "",
      "post_date": "03/30/2019 02:15:41",
      "content": "<p>I see people using softmax activation... This is weird since we're predicting multiclasses. It's better to use sigmoid in the last output layer and than try different threshold to decide what labels you need to keep. </p>",
      "votes": null,
      "replies": [
        {
          "id": 503509,
          "author_name": "yohalf",
          "author_url": "",
          "post_date": "03/30/2019 05:19:09",
          "content": "<p>But one of the problem putting is like that since the \"positive\" is very sparse, then your network will most likely predict 0. I am not saying it is the best approach but if you are able to detect one of the labels with high precision then it is good to go for starter kernel.</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "503332": "How are you guys building your models output, as we can see the items can have on or more output, currently I build [a model](https://www.kaggle.com/dimitreoliveira/imet-collection-2019-eda-keras) that can output only 1 label, but to get better results we need this \"dynamic size\" output, I'm thinking to use something like multi-tasking models, or set a threshold on the output of a regular multiclass model, any ideas?",
    "503338": "Its a known task called \"multi-label classification\" when each object may belong to multiple classes.\nIn simple case you can just output probability for each class and use some threshold to derive actual labels.\nTraining that is simple as regular classification: cross-entropy for each class and take sum/mean after that.",
    "503375": "Oh I see it, thanks Vladislav, I'll do some research.",
    "503448": "I see people using softmax activation... This is weird since we're predicting multiclasses. It's better to use sigmoid in the last output layer and than try different threshold to decide what labels you need to keep.",
    "503509": "But one of the problem putting is like that since the \"positive\" is very sparse, then your network will most likely predict 0. I am not saying it is the best approach but if you are able to detect one of the labels with high precision then it is good to go for starter kernel."
  },
  "source": "meta"
}