{
  "id": 112819,
  "title": "Tips to get 0.066 on LB (with code on github)",
  "url": "/competitions/rsna-intracranial-hemorrhage-detection/discussion/112819",
  "author_name": "Appian",
  "post_date": "2019-10-15T15:20:40.177000",
  "votes": 137,
  "comment_count": 188,
  "views": 0,
  "content": "<p>With se_resnext50 you can achieve 0.066 on LB. Here is the tips. </p>\n\n<ul>\n<li>5 folds </li>\n<li>512x512</li>\n<li>3 epochs</li>\n<li>hflip, crop, brightness, contrast, rotate (<a href=\"https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage/blob/master/conf/model001.py\">here</a> is the details of augmentations)</li>\n<li>three types of windows, brain, blood and soft tissues.</li>\n<li>tta (5 times)</li>\n<li>lb 0.070 to 0.072 for each fold (with tta)</li>\n<li>cv 0.071 to 0.074 for each fold (without tta)</li>\n<li>lb 0.066 is achievable by averaging folds</li>\n</ul>\n\n<p>I've also shared the source code on github in case you are interested. \n<a href=\"https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage\">https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage</a></p>\n\n<p>The github repo lets you train a basic single model as a baseline which probably scores 0.070 to 0.072 on public LB. This baseline model takes 20 hours to train with a single 1080ti.\nIf you have any questions please ask. Have fun.</p>",
  "messages": [
    {
      "id": 649616,
      "postDate": "2019-10-15T15:20:40.177Z",
      "content": "<p>With se_resnext50 you can achieve 0.066 on LB. Here is the tips. </p>\n\n<ul>\n<li>5 folds </li>\n<li>512x512</li>\n<li>3 epochs</li>\n<li>hflip, crop, brightness, contrast, rotate (<a href=\"https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage/blob/master/conf/model001.py\">here</a> is the details of augmentations)</li>\n<li>three types of windows, brain, blood and soft tissues.</li>\n<li>tta (5 times)</li>\n<li>lb 0.070 to 0.072 for each fold (with tta)</li>\n<li>cv 0.071 to 0.074 for each fold (without tta)</li>\n<li>lb 0.066 is achievable by averaging folds</li>\n</ul>\n\n<p>I've also shared the source code on github in case you are interested. \n<a href=\"https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage\">https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage</a></p>\n\n<p>The github repo lets you train a basic single model as a baseline which probably scores 0.070 to 0.072 on public LB. This baseline model takes 20 hours to train with a single 1080ti.\nIf you have any questions please ask. Have fun.</p>",
      "rawMarkdown": "With se\\_resnext50 you can achieve 0.066 on LB. Here is the tips. \n\n- 5 folds \n- 512x512\n- 3 epochs\n- hflip, crop, brightness, contrast, rotate ([here](https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage/blob/master/conf/model001.py) is the details of augmentations)\n- three types of windows, brain, blood and soft tissues.\n- tta (5 times)\n- lb 0.070 to 0.072 for each fold (with tta)\n- cv 0.071 to 0.074 for each fold (without tta)\n- lb 0.066 is achievable by averaging folds\n\nI've also shared the source code on github in case you are interested. \nhttps://github.com/appian42/kaggle-rsna-intracranial-hemorrhage\n\nThe github repo lets you train a basic single model as a baseline which probably scores 0.070 to 0.072 on public LB. This baseline model takes 20 hours to train with a single 1080ti.\nIf you have any questions please ask. Have fun.\n",
      "votes": 137
    },
    {
      "id": 650648,
      "postDate": "2019-10-16T15:11:33.170Z",
      "content": "<p>Thank you for all the feedbacks. Let me explain a few points.</p>\n\n<ul>\n<li>We are allowed to share our ideas, codes, solutions during the competition as long as it's not the last week of the competition. We had three weeks and thought it was no problem.</li>\n<li>I learn a lot from source code someone shares during a competition. Kernels, ideas are very helpful too but the most helpful one for me was the complete pipeline because I was able to learn how to structure the project while doing the competition. I learn here and I'd like to share too. </li>\n</ul>\n\n<p>That being said, I now see all of your concerns and I will be more careful with this.</p>",
      "rawMarkdown": "Thank you for all the feedbacks. Let me explain a few points.\n\n- We are allowed to share our ideas, codes, solutions during the competition as long as it's not the last week of the competition. We had three weeks and thought it was no problem.\n- I learn a lot from source code someone shares during a competition. Kernels, ideas are very helpful too but the most helpful one for me was the complete pipeline because I was able to learn how to structure the project while doing the competition. I learn here and I'd like to share too. \n\nThat being said, I now see all of your concerns and I will be more careful with this.\n",
      "votes": 37,
      "replies": [
        {
          "id": 651166,
          "postDate": "2019-10-17T06:10:53.327Z",
          "content": "<p>[deleted]</p>",
          "rawMarkdown": "[deleted]"
        },
        {
          "id": 651373,
          "postDate": "2019-10-17T12:20:54.363Z",
          "content": "<p>Thanks for sharing this Appian. The source organization is the really valuable thing here as you noted. I think it’s early enough in the competition for this to become a solid baseline rather than a LB destroyer, though I do understand why people might get upset about this. </p>\n\n<p>This sort of thing really is the best kind of educational resource one can find through Kaggle, and it still would be even if posted after the competition. </p>",
          "rawMarkdown": "Thanks for sharing this Appian. The source organization is the really valuable thing here as you noted. I think it’s early enough in the competition for this to become a solid baseline rather than a LB destroyer, though I do understand why people might get upset about this. \n\nThis sort of thing really is the best kind of educational resource one can find through Kaggle, and it still would be even if posted after the competition. ",
          "votes": 2
        }
      ]
    },
    {
      "id": 650536,
      "postDate": "2019-10-16T13:36:56.727Z",
      "content": "<p>I was stuck with  a score of 0.81 for weeks and secondly my only resource for GPU are kaggle kernels,so i can experiment with 4 different configurations  in a week being a student i could not avail the GCP credits as i dont have a credit card(so participating in this competition is already tricky for someone like me),I have lost every bit of motivation for participating in this contest with  this \"code Sharing\",You could have shared some code for windowing that would have been  educational ,but now that you have shared an entire repository most of the guys wont bother to understand the stuff ,Copy and paste and bang!!!! 100 people with 0.66 scores .Kaggle should be more strict in making sure  that this does not happen again,.Downvote if you have issues with such a long comment i just dont care.</p>",
      "rawMarkdown": "I was stuck with  a score of 0.81 for weeks and secondly my only resource for GPU are kaggle kernels,so i can experiment with 4 different configurations  in a week being a student i could not avail the GCP credits as i dont have a credit card(so participating in this competition is already tricky for someone like me),I have lost every bit of motivation for participating in this contest with  this \"code Sharing\",You could have shared some code for windowing that would have been  educational ,but now that you have shared an entire repository most of the guys wont bother to understand the stuff ,Copy and paste and bang!!!! 100 people with 0.66 scores .Kaggle should be more strict in making sure  that this does not happen again,.Downvote if you have issues with such a long comment i just dont care.",
      "votes": 20,
      "replies": [
        {
          "id": 650552,
          "postDate": "2019-10-16T13:56:39.237Z",
          "content": "<p>Nobody has issues with your comments=) Everything what you said is on point. This happens already on several other competitions. The only thing we can do as community is raise our voices and discourage this kind of behavior. </p>",
          "rawMarkdown": "Nobody has issues with your comments=) Everything what you said is on point. This happens already on several other competitions. The only thing we can do as community is raise our voices and discourage this kind of behavior. ",
          "votes": 7
        },
        {
          "id": 657645,
          "postDate": "2019-10-25T10:21:06.143Z",
          "content": "<p>i m too coming from one such competition where in my current score would landed me up in top 100 ,due to highscore kernel many copiers got into top 150</p>",
          "rawMarkdown": "i m too coming from one such competition where in my current score would landed me up in top 100 ,due to highscore kernel many copiers got into top 150",
          "votes": 1
        }
      ]
    },
    {
      "id": 649832,
      "postDate": "2019-10-15T19:53:36.463Z",
      "content": "<p>But why to distort leaderboard with open source solution??\nThat's just not alright.</p>",
      "rawMarkdown": "But why to distort leaderboard with open source solution??\nThat's just not alright.",
      "votes": 16
    },
    {
      "id": 649736,
      "postDate": "2019-10-15T18:04:35.953Z",
      "content": "<p>&gt;tips</p>\n\n<p>&gt;full code on github</p>\n\n<p>You have a nice sense of humor :)</p>",
      "rawMarkdown": "&gt;tips\n\n&gt;full code on github\n\nYou have a nice sense of humor :)",
      "votes": 13
    },
    {
      "id": 650452,
      "postDate": "2019-10-16T12:05:19.403Z",
      "content": "<p>if you want train all the data, you need check custom_dataset.py file.\nlike this:\n<code>\n        self.df = apply_dataset_policy(self.df, self.cfg.dataset_policy)\n        # self.df = self.df.sample(560)\n</code></p>",
      "rawMarkdown": "if you want train all the data, you need check custom_dataset.py file.\nlike this:\n```\n        self.df = apply_dataset_policy(self.df, self.cfg.dataset_policy)\n        # self.df = self.df.sample(560)\n```\n",
      "votes": 10,
      "replies": [
        {
          "id": 650649,
          "postDate": "2019-10-16T15:13:26.090Z",
          "content": "<p>Thank you for pointing this out. I did this to see the code runs without problems but forgot to uncomment. </p>",
          "rawMarkdown": "Thank you for pointing this out. I did this to see the code runs without problems but forgot to uncomment. ",
          "votes": 2
        }
      ]
    },
    {
      "id": 650533,
      "postDate": "2019-10-16T13:32:39.147Z",
      "content": "<p>don't waste your time with this pipeline</p>",
      "rawMarkdown": "don't waste your time with this pipeline",
      "votes": 7
    },
    {
      "id": 650077,
      "postDate": "2019-10-16T04:21:46.297Z",
      "content": "<p>This isn't alright. I dont' quite understand how people can give so many upvotes to this post. Last year, in the TGS competition, the Neptune team faced with lots of negative reaction even though they only released a \"silver\" zone code base. <br>\nThanks to your kindness, somebody with computing resources just needs to clone the code and easily gets good ranking 🙂 </p>",
      "rawMarkdown": "This isn't alright. I dont' quite understand how people can give so many upvotes to this post. Last year, in the TGS competition, the Neptune team faced with lots of negative reaction even though they only released a \"silver\" zone code base.  \nThanks to your kindness, somebody with computing resources just needs to clone the code and easily gets good ranking 🙂 ",
      "votes": 7
    },
    {
      "id": 662108,
      "postDate": "2019-10-31T05:01:37.503Z",
      "content": "<p><a href=\"/appian\">@appian</a> it's time to share  0.058 code 🤔 </p>",
      "rawMarkdown": "@appian it's time to share  0.058 code 🤔 \n\t",
      "votes": 7,
      "replies": [
        {
          "id": 662123,
          "postDate": "2019-10-31T05:42:42.330Z",
          "content": "<p>Or what about November 12? I feel like that'd be a better time...</p>",
          "rawMarkdown": "Or what about November 12? I feel like that'd be a better time...",
          "votes": 1
        },
        {
          "id": 662129,
          "postDate": "2019-10-31T05:54:00.450Z",
          "content": "<p>Don't be so seriuos</p>",
          "rawMarkdown": "Don't be so seriuos",
          "votes": 1
        },
        {
          "id": 662438,
          "postDate": "2019-10-31T14:55:52.990Z",
          "content": "<p>Haha, whoops. I thought you were being serious. 😆</p>",
          "rawMarkdown": "Haha, whoops. I thought you were being serious. 😆",
          "votes": 1
        }
      ]
    },
    {
      "id": 650417,
      "postDate": "2019-10-16T11:02:02.120Z",
      "content": "<p>Could you please explain the motivation of doing this​?​ </p>",
      "rawMarkdown": "Could you please explain the motivation of doing this​?​ ",
      "votes": 7
    },
    {
      "id": 652423,
      "postDate": "2019-10-18T20:46:56.083Z",
      "content": "<p>Normally I wouldn't be so annoyed by things like this, but for competition with dataset of this magnitude, posting a solution that has a higher score than most people, even with bronze on public lb, is basically forcing people to spend hours and hours training this specific model. This leads to less diversified models, lower likelihood of brilliant unique solutions, and most importantly, less interesting competition.</p>",
      "rawMarkdown": "Normally I wouldn't be so annoyed by things like this, but for competition with dataset of this magnitude, posting a solution that has a higher score than most people, even with bronze on public lb, is basically forcing people to spend hours and hours training this specific model. This leads to less diversified models, lower likelihood of brilliant unique solutions, and most importantly, less interesting competition.",
      "votes": 5,
      "replies": [
        {
          "id": 652533,
          "postDate": "2019-10-19T02:26:40.913Z",
          "content": "<p>I guess the eco-friendly thing would be to just post the submission file and save everyone the time and electricity. 😋 </p>",
          "rawMarkdown": "I guess the eco-friendly thing would be to just post the submission file and save everyone the time and electricity. 😋 ",
          "votes": 7
        }
      ]
    },
    {
      "id": 650577,
      "postDate": "2019-10-16T14:16:47.397Z",
      "content": "<p>Thanks for sharing. I get 0.5 on LB by this pipeline, and wasted one chance of my submission :P Don't waste your time with this pipeline.</p>",
      "rawMarkdown": "Thanks for sharing. I get 0.5 on LB by this pipeline, and wasted one chance of my submission :P Don't waste your time with this pipeline.",
      "votes": 4,
      "replies": [
        {
          "id": 650579,
          "postDate": "2019-10-16T14:17:56.200Z",
          "content": "<p>the same</p>",
          "rawMarkdown": "the same",
          "votes": 3
        },
        {
          "id": 650608,
          "postDate": "2019-10-16T14:41:23.997Z",
          "content": "<p>So, This sharing  does not reach 0.066?</p>",
          "rawMarkdown": "So, This sharing  does not reach 0.066?",
          "votes": 1
        },
        {
          "id": 650618,
          "postDate": "2019-10-16T14:49:04.913Z",
          "content": "<p>Haven't tested the code myself, but from my experience with this competition the only way you can get score above 0.4 is by messing up the labels</p>",
          "rawMarkdown": "Haven't tested the code myself, but from my experience with this competition the only way you can get score above 0.4 is by messing up the labels",
          "votes": 1
        },
        {
          "id": 650621,
          "postDate": "2019-10-16T14:50:27.130Z",
          "content": "<p>No, it does not.</p>",
          "rawMarkdown": "No, it does not.",
          "votes": 1
        },
        {
          "id": 651058,
          "postDate": "2019-10-17T02:12:32.073Z",
          "content": "<p>If you run it without looking at the code, you probably get 0.4, but if you study the code, you may learn a lot. </p>",
          "rawMarkdown": "If you run it without looking at the code, you probably get 0.4, but if you study the code, you may learn a lot. ",
          "votes": 2
        }
      ]
    },
    {
      "id": 649787,
      "postDate": "2019-10-15T18:40:29.433Z",
      "content": "<p>Thanks for your \"baseline\"! I think a lot of people (incl. me) can learn from it.\nI'm a little bit shocked however, since it is a competition and the result is very strong.</p>",
      "rawMarkdown": "Thanks for your \"baseline\"! I think a lot of people (incl. me) can learn from it.\nI'm a little bit shocked however, since it is a competition and the result is very strong.",
      "votes": 4
    },
    {
      "id": 650031,
      "postDate": "2019-10-16T02:56:37.937Z",
      "content": "<p>Do you prefer a discussion gold medal than a competition gold medal?</p>",
      "rawMarkdown": "Do you prefer a discussion gold medal than a competition gold medal?",
      "votes": 5
    },
    {
      "id": 650348,
      "postDate": "2019-10-16T09:41:27.667Z",
      "content": "<p>Another fucking one - goddamn it. I guess I wont bother with this competition.</p>",
      "rawMarkdown": "Another fucking one - goddamn it. I guess I wont bother with this competition.",
      "votes": 3
    },
    {
      "id": 653842,
      "postDate": "2019-10-21T03:28:32.267Z",
      "content": "<p>Hi <a href=\"/appian\">@appian</a> , I am sorry for this dumb question ;)</p>\n\n<p><code>image = np.array([\n            image1 - image1.mean(),\n            image2 - image2.mean(),\n            image3 - image3.mean(),\n        ]) \n</code>\nDo I understand correctly that you minus different means for each individual image?\n(I have been confused on this point on other competitions too — I thought we should apply <em>channel means</em> calculated from all data )</p>",
      "rawMarkdown": "Hi @appian , I am sorry for this dumb question ;)\n\n`image = np.array([\n            image1 - image1.mean(),\n            image2 - image2.mean(),\n            image3 - image3.mean(),\n        ]) \n`\nDo I understand correctly that you minus different means for each individual image?\n(I have been confused on this point on other competitions too — I thought we should apply *channel means* calculated from all data )",
      "votes": 3,
      "replies": [
        {
          "id": 653854,
          "postDate": "2019-10-21T04:01:41.460Z",
          "content": "<p>No,it's used for different part of each picture.\ne.g. brain,bone blood..</p>",
          "rawMarkdown": "No,it's used for different part of each picture.\ne.g. brain,bone blood.."
        },
        {
          "id": 653856,
          "postDate": "2019-10-21T04:09:09.960Z",
          "content": "<p>Hi Neuron, </p>\n\n<p>Thank you for pointing this out.\nNow I realized I made a mistake and you are right.</p>\n\n<p>I meant to use min-max normalization.\nFor policy == 2, this part is I think okay, \n<code>\nimage1 = (image1 - 0) / 80\nimage2 = (image2 - (-20)) / 200\nimage3 = (image3 - (-150)) / 380\n</code></p>\n\n<p>But as you metioned, \n<code>\nimage = np.array([\n    image1 - image1.mean(),\n    image2 - image2.mean(),\n    image3 - image3.mean(),\n])\n</code>\nthis does not make sense and should be just <code>image = np.array([image1, image2, image3])</code>.</p>\n\n<p>And yes, you can use z-score normalization (by calculating mean and std from all data) instead of this too.</p>",
          "rawMarkdown": "Hi Neuron, \n\nThank you for pointing this out.\nNow I realized I made a mistake and you are right.\n\nI meant to use min-max normalization.\nFor policy == 2, this part is I think okay, \n```\nimage1 = (image1 - 0) / 80\nimage2 = (image2 - (-20)) / 200\nimage3 = (image3 - (-150)) / 380\n```\n\nBut as you metioned, \n```\nimage = np.array([\n    image1 - image1.mean(),\n    image2 - image2.mean(),\n    image3 - image3.mean(),\n])\n```\nthis does not make sense and should be just `image = np.array([image1, image2, image3])`.\n\nAnd yes, you can use z-score normalization (by calculating mean and std from all data) instead of this too.",
          "votes": 3
        },
        {
          "id": 653861,
          "postDate": "2019-10-21T04:23:23.480Z",
          "content": "<p>Thanks <a href=\"/appian\">@appian</a> ! I am a bit relieved that I don’t fundamentally misunderstand something :D</p>",
          "rawMarkdown": "Thanks @appian ! I am a bit relieved that I don’t fundamentally misunderstand something :D",
          "votes": 1
        },
        {
          "id": 658544,
          "postDate": "2019-10-26T06:17:34.207Z",
          "content": "<p>1) <a href=\"/appian\">@appian</a> coud u point me how are u normalizing the images .. based on which stats ?\n2) i see you are generating the folds based on patient id. Should we do train test split based on the subtype pos count ?</p>",
          "rawMarkdown": "1) @appian coud u point me how are u normalizing the images .. based on which stats ?\n2) i see you are generating the folds based on patient id. Should we do train test split based on the subtype pos count ?"
        },
        {
          "id": 660415,
          "postDate": "2019-10-29T05:07:22.230Z",
          "content": "<p><a href=\"/appian\">@appian</a> Can I ask why is this part correct for <code>policy == 1</code>. Sorry for the dumb question\n<code>\nimage = np.array([\n    image1 - image1.mean(),\n    image2 - image2.mean(),\n    image3 - image3.mean(),\n])\n</code></p>",
          "rawMarkdown": "@appian Can I ask why is this part correct for `policy == 1`. Sorry for the dumb question\n```\nimage = np.array([\n    image1 - image1.mean(),\n    image2 - image2.mean(),\n    image3 - image3.mean(),\n])\n```"
        },
        {
          "id": 660619,
          "postDate": "2019-10-29T11:30:30.993Z",
          "content": "<p><a href=\"/axel81\">@axel81</a>\nI think that part is not good too.\nI did not mention because that part is not used in the code.\nUnlike <code>policy == 2</code>, <code>policy == 1</code> uses doctor's custom window and min-max normalization might not be a good idea because max value and min value varies image to image.</p>\n\n<p><a href=\"/jaideepvalani\">@jaideepvalani</a> \nYou can normalize them using each channel's mean and std values calculated from all images.</p>",
          "rawMarkdown": "@axel81\nI think that part is not good too.\nI did not mention because that part is not used in the code.\nUnlike `policy == 2`, `policy == 1` uses doctor's custom window and min-max normalization might not be a good idea because max value and min value varies image to image.\n\n@jaideepvalani \nYou can normalize them using each channel's mean and std values calculated from all images."
        }
      ]
    },
    {
      "id": 650331,
      "postDate": "2019-10-16T09:27:39.727Z",
      "content": "<p>in main.py\ntorch.backends.cudnn.deterministic = True\nThis will more slow than set False.</p>",
      "rawMarkdown": "in main.py\ntorch.backends.cudnn.deterministic = True\nThis will more slow than set False.",
      "votes": 3,
      "replies": [
        {
          "id": 653349,
          "postDate": "2019-10-20T09:45:15.013Z",
          "content": "<p>Hi,\nWhat is the reason to set at True being slow instead of set False to be faster ?</p>",
          "rawMarkdown": "Hi,\nWhat is the reason to set at True being slow instead of set False to be faster ?"
        },
        {
          "id": 653359,
          "postDate": "2019-10-20T10:15:30.013Z",
          "content": "<p>The deterministic flag is to help reproduce results. Usually gpu cores work in semi chaotic order, producing slightly different results if you run the same training twice (even with the same random seeds everywhere else). The deterministic flag cause cudnn the produce the same result if you rerun it with the same inputs twice. in doing so, you lose a bit of speed as concurrency is more limited. At least that is my understanding....</p>",
          "rawMarkdown": "The deterministic flag is to help reproduce results. Usually gpu cores work in semi chaotic order, producing slightly different results if you run the same training twice (even with the same random seeds everywhere else). The deterministic flag cause cudnn the produce the same result if you rerun it with the same inputs twice. in doing so, you lose a bit of speed as concurrency is more limited. At least that is my understanding....",
          "votes": 3
        }
      ]
    },
    {
      "id": 650246,
      "postDate": "2019-10-16T08:06:58.917Z",
      "content": "<p>Even though it is super rude to release a solution like this, everything in it has been discussed on the forums and in kernels. My one fold score without tta is pretty close with 224x224 images and a far smaller architecture, and there's still so many things to try. I predict the final gold medal loss is going to be a lot lower.</p>",
      "rawMarkdown": "Even though it is super rude to release a solution like this, everything in it has been discussed on the forums and in kernels. My one fold score without tta is pretty close with 224x224 images and a far smaller architecture, and there's still so many things to try. I predict the final gold medal loss is going to be a lot lower.",
      "votes": 4
    },
    {
      "id": 649633,
      "postDate": "2019-10-15T15:39:52.360Z",
      "content": "<p>thanks so much for your generous sharing.\nSince the competition is still ongoing, just curious would it be better to share the idea of how to improve the score, instead of directly uploading the whole source code?\npeople may copy and make submission without thinking😆 </p>",
      "rawMarkdown": "thanks so much for your generous sharing.\nSince the competition is still ongoing, just curious would it be better to share the idea of how to improve the score, instead of directly uploading the whole source code?\npeople may copy and make submission without thinking😆 ",
      "votes": 4,
      "replies": [
        {
          "id": 649692,
          "postDate": "2019-10-15T17:02:28.173Z",
          "content": "<p>I totally agree with you.. =) But to play devils advocate sharing kernel is the same...</p>\n\n<p>But my  concern is that this code executed correctly puts you at 11 place... which is gold medal... </p>",
          "rawMarkdown": "I totally agree with you.. =) But to play devils advocate sharing kernel is the same...\n\nBut my  concern is that this code executed correctly puts you at 11 place... which is gold medal... "
        },
        {
          "id": 649701,
          "postDate": "2019-10-15T17:18:18Z",
          "content": "<p>Gold medal as of today, still a month to go, not to forget stage 2</p>",
          "rawMarkdown": "Gold medal as of today, still a month to go, not to forget stage 2",
          "votes": -4
        },
        {
          "id": 649849,
          "postDate": "2019-10-15T20:29:22.787Z",
          "content": "<p>This timeline might be true for other competitions where you have small dataset. But here decent model need to  train up to 4-5 days. </p>\n\n<p>Also I am pretty sure if I will upload my GitHub repo code which gives 1st place... (for now)  People will have very negative reaction. </p>",
          "rawMarkdown": "This timeline might be true for other competitions where you have small dataset. But here decent model need to  train up to 4-5 days. \n\nAlso I am pretty sure if I will upload my GitHub repo code which gives 1st place... (for now)  People will have very negative reaction. ",
          "votes": 9
        },
        {
          "id": 649856,
          "postDate": "2019-10-15T20:44:37.437Z",
          "content": "<p>Exactly. \nI believe that without this solution 0.66 score might give you silver/bronze by the end. \nNot respectful \"tips\". </p>",
          "rawMarkdown": "Exactly. \nI believe that without this solution 0.66 score might give you silver/bronze by the end. \nNot respectful \"tips\". ",
          "votes": 5
        },
        {
          "id": 649860,
          "postDate": "2019-10-15T20:49:59.293Z",
          "content": "<p>Another argument against such sharing of solutions is that despite the fact that the pipeline takes only a couple of days to train, it is actually backed by <strong>weeks of experiments</strong> we know nothing about.</p>\n\n<p>As a result now it will be relatively easy to achieve 0.066 score, but since most of us don't have any intuition behind this code, it will be still quite hard to beat it.</p>\n\n<p>So I have a feeling that aftershock of publishing this repo will be present even in the final leaderboard (especially in the upper-silver tier), and I don't think that such sharing was a wise thing to do.</p>",
          "rawMarkdown": "Another argument against such sharing of solutions is that despite the fact that the pipeline takes only a couple of days to train, it is actually backed by **weeks of experiments** we know nothing about.\n\nAs a result now it will be relatively easy to achieve 0.066 score, but since most of us don't have any intuition behind this code, it will be still quite hard to beat it.\n\nSo I have a feeling that aftershock of publishing this repo will be present even in the final leaderboard (especially in the upper-silver tier), and I don't think that such sharing was a wise thing to do.",
          "votes": 11
        },
        {
          "id": 650032,
          "postDate": "2019-10-16T02:56:50.690Z",
          "content": "<p>It would have been better to share non-working code. All of Heng's starter kits require quite a bit of homework before anything will run, and are more educational as a result</p>",
          "rawMarkdown": "It would have been better to share non-working code. All of Heng's starter kits require quite a bit of homework before anything will run, and are more educational as a result",
          "votes": 4
        },
        {
          "id": 650172,
          "postDate": "2019-10-16T06:51:41.603Z",
          "content": "<p>Anyways I really admire Appian's spirit of sharing.\nAlthough I really want a Kaggle medal to prove myself, I may not continue this competition as I feel like I already read the answer before answering a question😆 </p>\n\n<p>I cant imagine what will happen to the leaderboard after one week😹 </p>",
          "rawMarkdown": "Anyways I really admire Appian's spirit of sharing.\nAlthough I really want a Kaggle medal to prove myself, I may not continue this competition as I feel like I already read the answer before answering a question😆 \n\nI cant imagine what will happen to the leaderboard after one week😹 ",
          "votes": -4
        },
        {
          "id": 650202,
          "postDate": "2019-10-16T07:21:08.167Z",
          "content": "<blockquote>\n  <p>I feel like I already read the answer before answering a question</p>\n</blockquote>\n\n<p>Yeah, it's the good analogy.</p>",
          "rawMarkdown": "&gt;  I feel like I already read the answer before answering a question\n\nYeah, it's the good analogy."
        }
      ]
    },
    {
      "id": 651695,
      "postDate": "2019-10-17T20:03:59.853Z",
      "content": "<p>I undestand people getting upset, but from a point of view of someone who is trying to learn, thanks for sharing some good code</p>",
      "rawMarkdown": "I undestand people getting upset, but from a point of view of someone who is trying to learn, thanks for sharing some good code",
      "votes": 3,
      "replies": [
        {
          "id": 652070,
          "postDate": "2019-10-18T09:32:39.857Z",
          "content": "<p>Maybe I don't understand something but I as a person who is trying to learn usually wait for competition end and then spend time to explore public solutions. It shouldn't make the difference to learn now or afterwards</p>",
          "rawMarkdown": "Maybe I don't understand something but I as a person who is trying to learn usually wait for competition end and then spend time to explore public solutions. It shouldn't make the difference to learn now or afterwards",
          "votes": 5
        },
        {
          "id": 652435,
          "postDate": "2019-10-18T20:58:06.530Z",
          "content": "<p><a href=\"/elvis1992\">@elvis1992</a> has got a solid point. For beginners, it may be of better interest to learn from top solutions in past competitions and try them out yourself with the late submission feature.</p>",
          "rawMarkdown": "@elvis1992 has got a solid point. For beginners, it may be of better interest to learn from top solutions in past competitions and try them out yourself with the late submission feature.",
          "votes": 1
        }
      ]
    },
    {
      "id": 651340,
      "postDate": "2019-10-17T11:18:30.687Z",
      "content": "<p>Don't worry guys. I believe there are two special places in DS hell: for people who publish such things and a separate one for those who up-vote feeding this madness.</p>",
      "rawMarkdown": "Don't worry guys. I believe there are two special places in DS hell: for people who publish such things and a separate one for those who up-vote feeding this madness.",
      "votes": 2,
      "replies": [
        {
          "id": 651341,
          "postDate": "2019-10-17T11:23:49.323Z",
          "content": "<p><strong>ds hell</strong> :)\nI wonder what kind of tortures are in there ? </p>",
          "rawMarkdown": "**ds hell** :)\nI wonder what kind of tortures are in there ? "
        },
        {
          "id": 651358,
          "postDate": "2019-10-17T11:57:19.497Z",
          "content": "<p>Backproping your CNNs by hand on a whiteboard?</p>",
          "rawMarkdown": "Backproping your CNNs by hand on a whiteboard?",
          "votes": 11
        },
        {
          "id": 651367,
          "postDate": "2019-10-17T12:09:43.943Z",
          "content": "<p><strong>DS hell</strong>\nRunning CNN on CPU 😄 </p>",
          "rawMarkdown": "**DS hell**\nRunning CNN on CPU 😄 "
        },
        {
          "id": 651372,
          "postDate": "2019-10-17T12:16:37.250Z",
          "content": "<p>Pretty sure it is just a symbolic API that runs over the top of native hell</p>",
          "rawMarkdown": "Pretty sure it is just a symbolic API that runs over the top of native hell",
          "votes": 2
        }
      ]
    },
    {
      "id": 651386,
      "postDate": "2019-10-17T12:45:19.467Z",
      "content": "<p>I reproduced the results. Thank's a lot!\nI also agree with the dissatisfied participants and feel a little guilty. But I do not know what can be done about it.</p>",
      "rawMarkdown": "I reproduced the results. Thank's a lot!\nI also agree with the dissatisfied participants and feel a little guilty. But I do not know what can be done about it.",
      "votes": 1
    },
    {
      "id": 649913,
      "postDate": "2019-10-15T22:30:05.033Z",
      "content": "<p>Interesting decision to dump all code :l</p>",
      "rawMarkdown": "Interesting decision to dump all code :l",
      "votes": 3
    },
    {
      "id": 651267,
      "postDate": "2019-10-17T09:05:15.307Z",
      "content": "<p>This is not good. Please do not waste your time!</p>",
      "rawMarkdown": "This is not good. Please do not waste your time!",
      "votes": 2,
      "replies": [
        {
          "id": 651325,
          "postDate": "2019-10-17T10:38:39.937Z",
          "content": "<p>Please elaborate why? </p>",
          "rawMarkdown": "Please elaborate why? ",
          "votes": 1
        }
      ]
    },
    {
      "id": 651369,
      "postDate": "2019-10-17T12:12:06.333Z",
      "content": "<p>Motivation is absolutely unclear, except you aimed to shake up LB or to get some quick upvotes...</p>",
      "rawMarkdown": "Motivation is absolutely unclear, except you aimed to shake up LB or to get some quick upvotes...",
      "votes": 1
    },
    {
      "id": 649737,
      "postDate": "2019-10-15T18:06:44.560Z",
      "content": "<p>Thank you very much for sharing. <br>\nThe directory structure and pipeline are very helpful.</p>",
      "rawMarkdown": "Thank you very much for sharing.  \nThe directory structure and pipeline are very helpful.",
      "votes": 2
    },
    {
      "id": 664987,
      "postDate": "2019-11-04T13:50:34.350Z",
      "content": "<p>Thank you for sharing this valuable informations.</p>",
      "rawMarkdown": "Thank you for sharing this valuable informations.",
      "votes": 1
    },
    {
      "id": 664870,
      "postDate": "2019-11-04T10:21:39.400Z",
      "content": "<p>thanks for sharing</p>",
      "rawMarkdown": "thanks for sharing",
      "votes": 1,
      "replies": [
        {
          "id": 665035,
          "postDate": "2019-11-04T15:05:34.613Z",
          "content": "<p><a href=\"/appian\">@appian</a> \n1) Adding Dihedral rotations ( 8 different kind of rotations ,45,-45,180 etc ) would be helpful considering the nature of image or it can be counterproductive . \n2) Altering the contrast to already dark images would be useful ?</p>",
          "rawMarkdown": "@appian \n1) Adding Dihedral rotations ( 8 different kind of rotations ,45,-45,180 etc ) would be helpful considering the nature of image or it can be counterproductive . \n2) Altering the contrast to already dark images would be useful ?",
          "votes": 1
        }
      ]
    },
    {
      "id": 658484,
      "postDate": "2019-10-26T03:58:16.193Z",
      "content": "<p><a href=\"/appian\">@appian</a> Why are the seeds changing per epoch based on the epoch value. \nThis then adds another thing to take care of during validation. \ni guess i am missing something.</p>\n\n<p>ive also added:\n<code>\n    torch.cuda.manual_seed(seed)\n    torch.cuda.manual_seed_all(seed)\n</code></p>\n\n<p>ive also found benchmark to be true. Have you seen significant improvement in the past because \nsetting this to false can increase repoducibility.\n<code>torch.backends.cudnn.benchmark = True</code></p>\n\n<p>and again. Thanks for such a nice codebase :)</p>",
      "rawMarkdown": "@appian Why are the seeds changing per epoch based on the epoch value. \nThis then adds another thing to take care of during validation. \ni guess i am missing something.\n\nive also added:\n```\n    torch.cuda.manual_seed(seed)\n    torch.cuda.manual_seed_all(seed)\n```\n\nive also found benchmark to be true. Have you seen significant improvement in the past because \nsetting this to false can increase repoducibility.\n`torch.backends.cudnn.benchmark = True`\n\nand again. Thanks for such a nice codebase :)",
      "votes": 1,
      "replies": [
        {
          "id": 658996,
          "postDate": "2019-10-26T22:31:58.573Z",
          "content": "<p>Hi, Kartik. \nI just wanted to have per epoch reproducibility in case of resuming the training for some other purposes. It can be commented out without worries.\nYes, benchmark should be False for the reasons you mentioned. I didn't realize that this makes it slower. Thank you for mentioning.</p>",
          "rawMarkdown": "Hi, Kartik. \nI just wanted to have per epoch reproducibility in case of resuming the training for some other purposes. It can be commented out without worries.\nYes, benchmark should be False for the reasons you mentioned. I didn't realize that this makes it slower. Thank you for mentioning."
        },
        {
          "id": 662441,
          "postDate": "2019-10-31T15:05:03.113Z",
          "content": "<p>In my run, setting benchmark to False makes it slower judging from the eta (I set deterministic to False as well). I switch back benchmark to True</p>",
          "rawMarkdown": "In my run, setting benchmark to False makes it slower judging from the eta (I set deterministic to False as well). I switch back benchmark to True"
        }
      ]
    },
    {
      "id": 657485,
      "postDate": "2019-10-25T07:20:34.360Z",
      "content": "<p>Thanks for sharing, can you tell me what's meaning of PositionOrd, LeftLabel and RightLabel. </p>\n\n<p>Much Thanks for your help~!</p>",
      "rawMarkdown": "Thanks for sharing, can you tell me what's meaning of PositionOrd, LeftLabel and RightLabel. \n\nMuch Thanks for your help~!",
      "votes": 1
    },
    {
      "id": 655641,
      "postDate": "2019-10-23T10:06:28.593Z",
      "content": "<p>Thanks for sharing,could you tell me why you use the following parameter for\nbone window?\nit is out of the range described in the link:<a href=\"https://radiopaedia.org/articles/windowing-ct\">https://radiopaedia.org/articles/windowing-ct</a></p>\n\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F3618085%2F1690d9d94ca348e6f33f47754928daee%2F.jpeg?generation=1571825121372736&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Thanks for sharing,could you tell me why you use the following parameter for\nbone window?\nit is out of the range described in the link:https://radiopaedia.org/articles/windowing-ct\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F3618085%2F1690d9d94ca348e6f33f47754928daee%2F.jpeg?generation=1571825121372736&amp;alt=media)\n",
      "votes": 1,
      "replies": [
        {
          "id": 655662,
          "postDate": "2019-10-23T10:41:51.487Z",
          "content": "<p>It's not really \"bone\". It should be \"soft tissues\".</p>",
          "rawMarkdown": "It's not really \"bone\". It should be \"soft tissues\".",
          "votes": 3
        },
        {
          "id": 655694,
          "postDate": "2019-10-23T11:30:28.397Z",
          "content": "<p><a href=\"/sergeyzlobin\">@sergeyzlobin</a> \nThanks for your replies.\nThen could you tell me where to find material which described the range \nof width and level\nof soft tissues?\nBecause I want to make sure the value he provided is reasonable .</p>\n\n<p>Much Thanks for your help~!</p>",
          "rawMarkdown": "@sergeyzlobin \nThanks for your replies.\nThen could you tell me where to find material which described the range \nof width and level\nof soft tissues?\nBecause I want to make sure the value he provided is reasonable .\n\nMuch Thanks for your help~!"
        },
        {
          "id": 655732,
          "postDate": "2019-10-23T12:50:20.063Z",
          "content": "<p>Look at your picture. \"Soft tissues\" under \"temporal bones\" on the right part.\nW: 350-400, L: 20-60.\nSo W=380, L=40 as Appian chose looks reasonable.</p>",
          "rawMarkdown": "Look at your picture. \"Soft tissues\" under \"temporal bones\" on the right part.\nW: 350-400, L: 20-60.\nSo W=380, L=40 as Appian chose looks reasonable.",
          "votes": 3
        },
        {
          "id": 658522,
          "postDate": "2019-10-26T05:30:51.757Z",
          "content": "<p>Got it,you're really genius~!!!\nMuch Thanks~!</p>",
          "rawMarkdown": "Got it,you're really genius~!!!\nMuch Thanks~!",
          "votes": 1
        }
      ]
    },
    {
      "id": 651311,
      "postDate": "2019-10-17T10:05:56.607Z",
      "content": "<p><a href=\"/appian\">@appian</a> Could you please shed some light on how you preprocess the images? Particularly, when you apply windowing, what do values, that you subtract from image array(0, -20, -150) mean? Are those just <code>image.min()</code> ?\n<code>\nimage1 = (image1 - 0) / 80</code>\n<code>image2 = (image2 - (-20)) / 200</code>\n<code>image3 = (image3 - (-150)) / 380\n</code>\nAlso in your code if policy==1,  than you subtract <code>image.min()</code> and divide by <code>(image3.max()-image3.min())</code> Why if policy==2 you divide by max only? Just trying to grasp the intuition behind this, thank you.</p>",
      "rawMarkdown": "@appian Could you please shed some light on how you preprocess the images? Particularly, when you apply windowing, what do values, that you subtract from image array(0, -20, -150) mean? Are those just `image.min()` ?\n`\nimage1 = (image1 - 0) / 80`\n`image2 = (image2 - (-20)) / 200`\n`image3 = (image3 - (-150)) / 380\n`\nAlso in your code if policy==1,  than you subtract `image.min()` and divide by `(image3.max()-image3.min())` Why if policy==2 you divide by max only? Just trying to grasp the intuition behind this, thank you.",
      "votes": 1,
      "replies": [
        {
          "id": 651498,
          "postDate": "2019-10-17T14:40:33.027Z",
          "content": "<p>It does the same thing. After windowing with fixed values you know the theoretical minimum and maximum values and I used these values for min-max normalization.</p>",
          "rawMarkdown": "It does the same thing. After windowing with fixed values you know the theoretical minimum and maximum values and I used these values for min-max normalization.",
          "votes": 1
        },
        {
          "id": 659459,
          "postDate": "2019-10-27T17:47:23.863Z",
          "content": "<p>@Appian thanks for shaing... \n is windowing useful for computer vision ? i presume machine is much capable than human in differentiating the gray shades. \nWill it make a difference  using or not using windowing .\nDid you got a boost after doing windowing ?</p>",
          "rawMarkdown": "@Appian thanks for shaing... \n is windowing useful for computer vision ? i presume machine is much capable than human in differentiating the gray shades. \nWill it make a difference  using or not using windowing .\nDid you got a boost after doing windowing ?"
        }
      ]
    },
    {
      "id": 651072,
      "postDate": "2019-10-17T02:42:11.823Z",
      "content": "<p><a href=\"/appian\">@appian</a>  Thank your sharing. But I have a question on your code,  It is about making adjacent labels. Your code is as following.\n<code>for j,id in enumerate(group.ID):\n            if j == 0:\n                left = labels[j-1]\n            else:\n                left = ''\n            if j+1 == len(labels):\n                right = ''\n            else:\n                right = labels[j+1]\n</code>\nThe left label won't be \" if, only if j == 0. If I modify this code as follows, could it will be better?\n<code>for j,id in enumerate(group.ID):\n            if j == 0:\n                left = ''\n            else:\n                left = labels[j-1]\n            if j+1 == len(labels):\n                right = ''\n            else:\n                right = labels[j+1]\n</code></p>",
      "rawMarkdown": "@appian  Thank your sharing. But I have a question on your code,  It is about making adjacent labels. Your code is as following.\n`        for j,id in enumerate(group.ID):\n            if j == 0:\n                left = labels[j-1]\n            else:\n                left = ''\n            if j+1 == len(labels):\n                right = ''\n            else:\n                right = labels[j+1]\n`\nThe left label won't be \" if, only if j == 0. If I modify this code as follows, could it will be better?\n`        for j,id in enumerate(group.ID):\n            if j == 0:\n                left = ''\n            else:\n                left = labels[j-1]\n            if j+1 == len(labels):\n                right = ''\n            else:\n                right = labels[j+1]\n`",
      "votes": 1,
      "replies": [
        {
          "id": 651495,
          "postDate": "2019-10-17T14:37:57.493Z",
          "content": "<p>Hi, thank you very much for pointing this out.\nI made a simple mistake and your implementation is correct. </p>\n\n<p>LeftLabel and RightLabel are actually not used in the code and does not affect the model. But this feature could be used to improve the traing process by giving some score to its adjacent images and that's why I left them there even though it's not used. </p>\n\n<p>If the target is something like\n<code>[1 1 0 1 0 0 1 0 0]</code></p>\n\n<p>You can spread the score like this\n<code>[1 1 0.4 1 0.2 0.2 1 0.2 0]</code></p>\n\n<p>just an idea.</p>",
          "rawMarkdown": "Hi, thank you very much for pointing this out.\nI made a simple mistake and your implementation is correct. \n\nLeftLabel and RightLabel are actually not used in the code and does not affect the model. But this feature could be used to improve the traing process by giving some score to its adjacent images and that's why I left them there even though it's not used. \n\nIf the target is something like\n```[1 1 0 1 0 0 1 0 0]```\n\nYou can spread the score like this\n```[1 1 0.4 1 0.2 0.2 1 0.2 0]```\n\njust an idea.",
          "votes": 1
        },
        {
          "id": 651849,
          "postDate": "2019-10-18T02:34:01.727Z",
          "content": "<p>Thank your idea.\nBesides, your code is so beautiful, I learn so much.</p>",
          "rawMarkdown": "Thank your idea.\nBesides, your code is so beautiful, I learn so much.",
          "votes": 1
        }
      ]
    },
    {
      "id": 650715,
      "postDate": "2019-10-16T16:09:29.907Z",
      "content": "<p>Looks like not much people share my admire of that clean and well organized piece of code... But anyway respect for that!</p>",
      "rawMarkdown": "Looks like not much people share my admire of that clean and well organized piece of code... But anyway respect for that!",
      "votes": 1
    },
    {
      "id": 650570,
      "postDate": "2019-10-16T14:11:25.063Z",
      "content": "<p><a href=\"/appian\">@appian</a> excellent coding skills, I wish I get there one day...</p>\n\n<p>I appreciate your sharing too. It shows that dicom, and several windows should be used over brain and pngs/jpgs, which makes RAM on kernels to small for serious experiments.</p>\n\n<p>I wonder what else did others see in this pipeline which was not already known from public kernels/discussions?</p>",
      "rawMarkdown": "@appian excellent coding skills, I wish I get there one day...\n\nI appreciate your sharing too. It shows that dicom, and several windows should be used over brain and pngs/jpgs, which makes RAM on kernels to small for serious experiments.\n\nI wonder what else did others see in this pipeline which was not already known from public kernels/discussions?",
      "votes": 1,
      "replies": [
        {
          "id": 650613,
          "postDate": "2019-10-16T14:44:45.077Z",
          "content": "<p>My 0.061 pipeline is totally from everything \"already known\" in discussions. Should I make it public too?</p>",
          "rawMarkdown": "My 0.061 pipeline is totally from everything \"already known\" in discussions. Should I make it public too?",
          "votes": 14
        },
        {
          "id": 650640,
          "postDate": "2019-10-16T15:00:26.057Z",
          "content": "<p>To add, there is a huge difference between sharing an idea and implementing to working code. </p>",
          "rawMarkdown": "To add, there is a huge difference between sharing an idea and implementing to working code. \n",
          "votes": 5
        },
        {
          "id": 650653,
          "postDate": "2019-10-16T15:16:20.247Z",
          "content": "<p><a href=\"/valanm\">@valanm</a> Thank you for your kind words. I appreciate that.</p>",
          "rawMarkdown": "@valanm Thank you for your kind words. I appreciate that.",
          "votes": 2
        },
        {
          "id": 650751,
          "postDate": "2019-10-16T16:47:38.570Z",
          "content": "<p><a href=\"/yaroshevskiy\">@yaroshevskiy</a> that is nice to know. It's on you to decide to share it or not and both are fine whether I like it or not because both are within the rules and that is what matters</p>\n\n<p><a href=\"/drhabib\">@drhabib</a> I agree. But having a good baseline is more than welcomed by both the organizer and kaggle. Not?</p>\n\n<p>Sure we can and should raise our voices if something feels wrong but we should know who to direct it. In this particular case, <a href=\"/appian\">@appian</a> did not violate the rules and we like it or not many found it useful... myself included</p>",
          "rawMarkdown": "@yaroshevskiy that is nice to know. It's on you to decide to share it or not and both are fine whether I like it or not because both are within the rules and that is what matters\n\n@drhabib I agree. But having a good baseline is more than welcomed by both the organizer and kaggle. Not?\n\nSure we can and should raise our voices if something feels wrong but we should know who to direct it. In this particular case, @appian did not violate the rules and we like it or not many found it useful... myself included",
          "votes": 1
        },
        {
          "id": 650761,
          "postDate": "2019-10-16T16:54:26.950Z",
          "content": "<p>&gt;both are fine whether I like it or not because both are within the rules and that is what matters</p>\n\n<p>\"Legit\" doesn't mean \"ethical\".</p>",
          "rawMarkdown": "&gt;both are fine whether I like it or not because both are within the rules and that is what matters\n\n\"Legit\" doesn't mean \"ethical\".",
          "votes": 2
        },
        {
          "id": 650788,
          "postDate": "2019-10-16T17:21:27.017Z",
          "content": "<p><a href=\"/hokmund\">@hokmund</a> I agree. But that doesn't mean <a href=\"/appian\">@appian</a> did something unethical. You may find it confusing and you may disagree but IMO his action is ethical.</p>\n\n<p>[Explanation]\nIt's hard to define if something is ethical. It's unknown to science how human brain decides whether something is good or bad and there is a huge gray area between the too. </p>\n\n<p>Then, there is a problem of being subjective. This has a huge effect on those who directly feel consequences which again can go into both directions. ( For instance, I am subjective because I benefit from nicely written pipeline which I hope to use in the future)</p>\n\n<p>To conclude, judgement based on consequences will differ as they are positives and negatives which are different to each of us. However judging from his intention I am sure his action** is ethical**. </p>",
          "rawMarkdown": "@hokmund I agree. But that doesn't mean @appian did something unethical. You may find it confusing and you may disagree but IMO his action is ethical.\n\n[Explanation]\nIt's hard to define if something is ethical. It's unknown to science how human brain decides whether something is good or bad and there is a huge gray area between the too. \n\nThen, there is a problem of being subjective. This has a huge effect on those who directly feel consequences which again can go into both directions. ( For instance, I am subjective because I benefit from nicely written pipeline which I hope to use in the future)\n\nTo conclude, judgement based on consequences will differ as they are positives and negatives which are different to each of us. However judging from his intention I am sure his action** is ethical**. ",
          "votes": 3
        },
        {
          "id": 650803,
          "postDate": "2019-10-16T17:38:42.823Z",
          "content": "<p>I will be blunt.\nMy best performing model has the same architecture as the published one, same single-fold score and similar pipeline (alas, mine is slightly more cumbersome). I am not a genius and I don't have lots of GPUs, so it took me several weeks of experiments to reach this state.</p>\n\n<p>After all that time and efforts I opened discussions and saw that someone posted similar pipeline, and for me the only viable insight from this post is the fact that 5 folds blend can probably boost my score to 0.066.</p>\n\n<p>I feel like dozens of evenings spent in front of the computer were flushed down the toilet at this point. And I guess that a lot of people from top-50 feel the same.</p>\n\n<p>I don't care whether consequences are positive for you or someone else, because it is still definitely unethical towards lots of participants.</p>\n\n<p>Of course, you are right that it is not forbidden to post such kernels. However, it still could be a wrong thing to do.</p>",
          "rawMarkdown": "I will be blunt.\nMy best performing model has the same architecture as the published one, same single-fold score and similar pipeline (alas, mine is slightly more cumbersome). I am not a genius and I don't have lots of GPUs, so it took me several weeks of experiments to reach this state.\n\nAfter all that time and efforts I opened discussions and saw that someone posted similar pipeline, and for me the only viable insight from this post is the fact that 5 folds blend can probably boost my score to 0.066.\n\nI feel like dozens of evenings spent in front of the computer were flushed down the toilet at this point. And I guess that a lot of people from top-50 feel the same.\n\nI don't care whether consequences are positive for you or someone else, because it is still definitely unethical towards lots of participants.\n\nOf course, you are right that it is not forbidden to post such kernels. However, it still could be a wrong thing to do.",
          "votes": 16
        }
      ]
    },
    {
      "id": 650734,
      "postDate": "2019-10-16T16:29:18.043Z",
      "content": "<p>thanks a lot <a href=\"/appian\">@appian</a> . The code is so clean and elegant..\ncan u tell more about the ensembling part ? ...</p>",
      "rawMarkdown": "thanks a lot @appian . The code is so clean and elegant..\ncan u tell more about the ensembling part ? ...\n"
    },
    {
      "id": 651083,
      "postDate": "2019-10-17T02:58:30.107Z",
      "content": "<p>Single FOLD PB 0.074</p>",
      "rawMarkdown": "Single FOLD PB 0.074",
      "votes": 2
    },
    {
      "id": 650330,
      "postDate": "2019-10-16T09:27:06.080Z",
      "content": "<p>What does tta mean ?</p>",
      "rawMarkdown": "What does tta mean ?",
      "votes": 2,
      "replies": [
        {
          "id": 650335,
          "postDate": "2019-10-16T09:29:42.110Z",
          "content": "<p><a href=\"https://machinelearningmastery.com/how-to-use-test-time-augmentation-to-improve-model-performance-for-image-classification/\">Test-time augmentation</a></p>",
          "rawMarkdown": "[Test-time augmentation](https://machinelearningmastery.com/how-to-use-test-time-augmentation-to-improve-model-performance-for-image-classification/)",
          "votes": 6
        },
        {
          "id": 650353,
          "postDate": "2019-10-16T09:44:57.690Z",
          "content": "<p>Thank you !</p>",
          "rawMarkdown": "Thank you !",
          "votes": 2
        }
      ]
    },
    {
      "id": 653239,
      "postDate": "2019-10-20T05:29:41.117Z",
      "content": "<p>I was about to start and then I saw this. Well, it does downgrade the motivation but thanks for the whole code it would be very helpful for starters to build a pipeline from start till the end.</p>",
      "rawMarkdown": "I was about to start and then I saw this. Well, it does downgrade the motivation but thanks for the whole code it would be very helpful for starters to build a pipeline from start till the end."
    },
    {
      "id": 654280,
      "postDate": "2019-10-21T16:49:18.710Z",
      "content": "<p>Thanks for sharing. You help me to understand a lot</p>",
      "rawMarkdown": "Thanks for sharing. You help me to understand a lot",
      "votes": 1
    },
    {
      "id": 653202,
      "postDate": "2019-10-20T03:41:20.907Z",
      "content": "<p>Thanks for your sharing,you're really genius.\nCould you tell me the explanation of the following code in your misc.py please?</p>\n\n<p><code>return {attr:cast(getattr(dicom,attr)) for attr in dir(dicom) if attr[0].isupper() and attr not in ['PixelData']}</code></p>\n\n<p>Much Thanks~</p>",
      "rawMarkdown": "Thanks for your sharing,you're really genius.\nCould you tell me the explanation of the following code in your misc.py please?\n\n`return {attr:cast(getattr(dicom,attr)) for attr in dir(dicom) if attr[0].isupper() and attr not in ['PixelData']}`\n\nMuch Thanks~",
      "votes": 1,
      "replies": [
        {
          "id": 653527,
          "postDate": "2019-10-20T15:26:56.230Z",
          "content": "<p>It's supposed to get all metadata from pydicom object. Because all the metadata attributes start with capital letter, this does the job. This is not very clean way though.</p>",
          "rawMarkdown": "It's supposed to get all metadata from pydicom object. Because all the metadata attributes start with capital letter, this does the job. This is not very clean way though.",
          "votes": 1
        }
      ]
    },
    {
      "id": 652400,
      "postDate": "2019-10-18T20:05:45.670Z",
      "content": "<p>Is anyone getting this error when running the training? Any help would be much appreciated! I'm just trying to learn in general.</p>\n\n<p>File \"/opt/anaconda3/lib/python3.7/site-packages/albumentations/augmentations/functional.py\", line 1246, in _brightness_contrast_adjust_non_uint\n    max_value = MAX_VALUES_BY_DTYPE[dtype]\nKeyError: dtype('float64')</p>",
      "rawMarkdown": "Is anyone getting this error when running the training? Any help would be much appreciated! I'm just trying to learn in general.\n\nFile \"/opt/anaconda3/lib/python3.7/site-packages/albumentations/augmentations/functional.py\", line 1246, in _brightness_contrast_adjust_non_uint\n    max_value = MAX_VALUES_BY_DTYPE[dtype]\nKeyError: dtype('float64')",
      "votes": 1,
      "replies": [
        {
          "id": 652512,
          "postDate": "2019-10-19T00:35:44Z",
          "content": "<p>You can try uninstall albumentations 0.4.0 and install 0.3.0. That solves same problem I had</p>",
          "rawMarkdown": "You can try uninstall albumentations 0.4.0 and install 0.3.0. That solves same problem I had",
          "votes": 4
        }
      ]
    },
    {
      "id": 651509,
      "postDate": "2019-10-17T14:47:14.310Z",
      "content": "<p>What is cv? Lb? I am a fresh bird, sorry!</p>",
      "rawMarkdown": "What is cv? Lb? I am a fresh bird, sorry!",
      "votes": 1,
      "replies": [
        {
          "id": 651520,
          "postDate": "2019-10-17T14:54:45.177Z",
          "content": "<p>CV means cross-validation score. LB means score on the leaderboard: <a href=\"https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/leaderboard\">https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/leaderboard</a></p>",
          "rawMarkdown": "CV means cross-validation score. LB means score on the leaderboard: https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/leaderboard",
          "votes": 1
        }
      ]
    },
    {
      "id": 652761,
      "postDate": "2019-10-19T11:31:49.227Z",
      "content": "<p>Good job!!!</p>",
      "rawMarkdown": "Good job!!!"
    },
    {
      "id": 650268,
      "postDate": "2019-10-16T08:32:53.423Z",
      "content": "<p>There is a reason behind everything we do. I'm pretty sure you have your reasons as well for doing this(and we respect that).The kaggle community would appreciate(and like to understand) the reason/motive behind your act. Could you please share your reasons/motive just like you did for your code?</p>",
      "rawMarkdown": "There is a reason behind everything we do. I'm pretty sure you have your reasons as well for doing this(and we respect that).The kaggle community would appreciate(and like to understand) the reason/motive behind your act. Could you please share your reasons/motive just like you did for your code?",
      "replies": [
        {
          "id": 650392,
          "postDate": "2019-10-16T10:15:41.087Z",
          "content": "<p>I really want to know the motivation too. This sharing stole my interest in this competition.\nHowever, I see the code is very clean and neat. I felt like he prepared for this. so confusing.</p>",
          "rawMarkdown": "I really want to know the motivation too. This sharing stole my interest in this competition.\nHowever, I see the code is very clean and neat. I felt like he prepared for this. so confusing.",
          "votes": -4
        }
      ]
    },
    {
      "id": 653120,
      "postDate": "2019-10-20T01:04:48.623Z",
      "content": "<p>Good job</p>",
      "rawMarkdown": "Good job"
    },
    {
      "id": 652698,
      "postDate": "2019-10-19T08:51:45.260Z",
      "content": "<p>I understand to some extent the people who are a bit annoyed but I have joined the competition very late and this gives me a sound base to develop from. Some of the techniques he used I wouldn't get to find in the timeframe I had left, especially since this competition was not as generous with knowledge as some other (or I just couldn't find it). So, basically, thank you very much! It is a very instructive github.</p>",
      "rawMarkdown": "I understand to some extent the people who are a bit annoyed but I have joined the competition very late and this gives me a sound base to develop from. Some of the techniques he used I wouldn't get to find in the timeframe I had left, especially since this competition was not as generous with knowledge as some other (or I just couldn't find it). So, basically, thank you very much! It is a very instructive github.",
      "votes": -9
    },
    {
      "id": 653368,
      "postDate": "2019-10-20T10:28:29.243Z",
      "content": "<p>comment</p>",
      "rawMarkdown": "comment",
      "votes": -3
    },
    {
      "id": 668603,
      "postDate": "2019-11-08T15:58:55.553Z",
      "content": "<p>I try to train for additionally 2 epoch but the val_loss did not reduce and the best epoch is still the epoch 2. Have you faced the same ? Do yuo know the reason why ?</p>",
      "rawMarkdown": "I try to train for additionally 2 epoch but the val_loss did not reduce and the best epoch is still the epoch 2. Have you faced the same ? Do yuo know the reason why ?"
    },
    {
      "id": 665287,
      "postDate": "2019-11-04T21:00:24.027Z",
      "content": "<p>I am seeing this exception <a href=\"/appian\">@appian</a> <a href=\"/oneraghavan\">@oneraghavan</a> <a href=\"/tikboa\">@tikboa</a> <a href=\"/paubellot\">@paubellot</a> \n&gt; value cannot be converted to type float without overflow</p>",
      "rawMarkdown": "I am seeing this exception @appian @oneraghavan @tikboa @paubellot \n&gt; value cannot be converted to type float without overflow"
    },
    {
      "id": 661785,
      "postDate": "2019-10-30T17:49:18.220Z",
      "content": "<p>I am getting a out of memory error. </p>\n\n<blockquote>\n  <p>RuntimeError: cuda runtime error (2) : out of memory at /opt/conda/conda-bld/pytorch_1524586445097/work/aten/src/THC/generic/THCStorage.cu:58</p>\n</blockquote>\n\n<p>Anyone has seen this before ? </p>",
      "rawMarkdown": "I am getting a out of memory error. \n&gt; RuntimeError: cuda runtime error (2) : out of memory at /opt/conda/conda-bld/pytorch_1524586445097/work/aten/src/THC/generic/THCStorage.cu:58\n\nAnyone has seen this before ? ",
      "replies": [
        {
          "id": 663884,
          "postDate": "2019-11-02T19:58:34.013Z",
          "content": "<p>Did you try to reduce batch size?</p>",
          "rawMarkdown": "Did you try to reduce batch size?"
        }
      ]
    },
    {
      "id": 661439,
      "postDate": "2019-10-30T09:48:38.957Z",
      "content": "<p><a href=\"/appian\">@appian</a>  Thanks for sharing your tips and code!\nI was wondering if you have tried to use different backbone models for each fold. \nIn my previous experience with ensembles of models, it has been beneficial to use more heterogeneity (different backbones and even loses).\nDo you have any insights? </p>",
      "rawMarkdown": "@appian  Thanks for sharing your tips and code!\nI was wondering if you have tried to use different backbone models for each fold. \nIn my previous experience with ensembles of models, it has been beneficial to use more heterogeneity (different backbones and even loses).\nDo you have any insights? ",
      "replies": [
        {
          "id": 661473,
          "postDate": "2019-10-30T10:59:57.370Z",
          "content": "<p>I haven't but it should help.\nLB 0.64 or 0.65 should be achievable by proper ensembling I believe.</p>",
          "rawMarkdown": "I haven't but it should help.\nLB 0.64 or 0.65 should be achievable by proper ensembling I believe.",
          "votes": 1
        }
      ]
    },
    {
      "id": 660411,
      "postDate": "2019-10-29T04:55:43.087Z",
      "rawMarkdown": ""
    },
    {
      "id": 660405,
      "postDate": "2019-10-29T04:40:35.927Z",
      "content": "<p><a href=\"/appian\">@appian</a>  Not able to reproduce the results . Followed things in repo. The last epoch message I get is this : \n----- epoch 2 -----\n[train] 35/35 12(s) eta:0(s) loss:0.192383 loss200:0.192383 lr:2.67e-05 auc:0.9116 micro:0.9219 macro:0.9014\n0.164902 [0.261712 0.05017  0.17197  0.135664 0.109691 0.163395]\n[valid] 35/35 4(s) eta:0(s) loss:0.194399 loss200:0.194399 lr:0.00e+00 auc:0.8669 micro:0.8839 macro:0.8498\n0.166630 [0.279988 0.035475 0.206813 0.154385 0.073574 0.136186]\nsaved model to ./model/model001/fold0_ep2.pt\n[best] ep:2 loss:0.1944 score:0.1666\nSome directions on what I am missing here ?</p>",
      "rawMarkdown": "@appian  Not able to reproduce the results . Followed things in repo. The last epoch message I get is this : \n----- epoch 2 -----\n[train] 35/35 12(s) eta:0(s) loss:0.192383 loss200:0.192383 lr:2.67e-05 auc:0.9116 micro:0.9219 macro:0.9014\n0.164902 [0.261712 0.05017  0.17197  0.135664 0.109691 0.163395]\n[valid] 35/35 4(s) eta:0(s) loss:0.194399 loss200:0.194399 lr:0.00e+00 auc:0.8669 micro:0.8839 macro:0.8498\n0.166630 [0.279988 0.035475 0.206813 0.154385 0.073574 0.136186]\nsaved model to ./model/model001/fold0_ep2.pt\n[best] ep:2 loss:0.1944 score:0.1666\nSome directions on what I am missing here ?",
      "replies": [
        {
          "id": 660428,
          "postDate": "2019-10-29T05:40:23.553Z",
          "content": "<p>Your loss is very high. What did you change? </p>",
          "rawMarkdown": "Your loss is very high. What did you change? "
        },
        {
          "id": 661240,
          "postDate": "2019-10-30T03:38:22.017Z",
          "content": "<p>m too getting similar <a href=\"/oneraghavan\">@oneraghavan</a>  .. what change required </p>",
          "rawMarkdown": "m too getting similar @oneraghavan  .. what change required "
        },
        {
          "id": 661641,
          "postDate": "2019-10-30T14:38:17.813Z",
          "content": "<p><a href=\"/appian\">@appian</a>\nmy loss comes quite high... unable to bring it down. \nI used half of the negative images and all positive images.\nCan this cause an issue</p>",
          "rawMarkdown": "@appian\nmy loss comes quite high... unable to bring it down. \nI used half of the negative images and all positive images.\nCan this cause an issue"
        },
        {
          "id": 661687,
          "postDate": "2019-10-30T15:39:19.097Z",
          "content": "<p>@Jaideep</p>\n\n<p>\"Can this cause an issue\" yes. you modified the data distribution. using your latest model as initisation, continue training using all train samples. if that is the cause, you should see decrease in train loss within the first few interations</p>",
          "rawMarkdown": "@Jaideep\n\n\"Can this cause an issue\" yes. you modified the data distribution. using your latest model as initisation, continue training using all train samples. if that is the cause, you should see decrease in train loss within the first few interations"
        },
        {
          "id": 661755,
          "postDate": "2019-10-30T17:09:01.813Z",
          "content": "<p><a href=\"/hengck23\">@hengck23</a>  thanks yeah... doing that now..\nbetween how it can cause disturbance in data distribution..did i took things too simplistic.like take half of negative images to fasten training..</p>",
          "rawMarkdown": "@hengck23  thanks yeah... doing that now..\nbetween how it can cause disturbance in data distribution..did i took things too simplistic.like take half of negative images to fasten training..\n\n"
        },
        {
          "id": 662515,
          "postDate": "2019-10-31T16:36:37.767Z",
          "content": "<p>Yes, but not like this. In the severstal competition I started training with all the negative samples and after each epoch I threw a portion of them out. Training was about 50 to 75 % faster, with about the same LB score. Note, you must keep your validation set as is, else you will have no real indication when to stop training.</p>",
          "rawMarkdown": "Yes, but not like this. In the severstal competition I started training with all the negative samples and after each epoch I threw a portion of them out. Training was about 50 to 75 % faster, with about the same LB score. Note, you must keep your validation set as is, else you will have no real indication when to stop training."
        }
      ]
    },
    {
      "id": 660334,
      "postDate": "2019-10-29T02:22:03.690Z",
      "content": "<p><a href=\"/appian\">@appian</a> Hello, Can you explain why did you remove these data when custom_diff &lt;=60?\n<code>df = df[df.custom_diff &gt; 60] <br>\nprint('removed records by custom_diff (%d records)' % len(df))</code></p>",
      "rawMarkdown": "@appian Hello, Can you explain why did you remove these data when custom_diff &lt;=60?\n`df = df[df.custom_diff &gt; 60]   \nprint('removed records by custom_diff (%d records)' % len(df))`",
      "replies": [
        {
          "id": 660622,
          "postDate": "2019-10-29T11:37:22.493Z",
          "content": "<p><code>custom_diff &lt; 60</code> indicates that that image is an edge of the head or not well taken. They are almost all negatives. CNN probably benefits from focusing on valid images by ignoring these odd images.</p>",
          "rawMarkdown": "`custom_diff &lt; 60` indicates that that image is an edge of the head or not well taken. They are almost all negatives. CNN probably benefits from focusing on valid images by ignoring these odd images.",
          "votes": 1
        }
      ]
    },
    {
      "id": 659168,
      "postDate": "2019-10-27T07:38:57.547Z",
      "content": "<p><a href=\"/appian\">@appian</a> The TTA strategy is a for loop 5 times of the same neural network model with the same test time compose function. The albumentation library depends on <code>python random seed</code> which we have fixed already. \n This is indeed is the same neural network model trained on the same modified test images and the changes that we are getting are due to the non-deterministic behavior of retraining. TTA should have taken different augmentation all the time of the test set and then averaged the prediction.\nAm I missing something? \nthanks again :) </p>",
      "rawMarkdown": "@appian The TTA strategy is a for loop 5 times of the same neural network model with the same test time compose function. The albumentation library depends on `python random seed` which we have fixed already. \n This is indeed is the same neural network model trained on the same modified test images and the changes that we are getting are due to the non-deterministic behavior of retraining. TTA should have taken different augmentation all the time of the test set and then averaged the prediction.\nAm I missing something? \nthanks again :) ",
      "replies": [
        {
          "id": 659174,
          "postDate": "2019-10-27T07:51:03.463Z",
          "content": "<p>as the augs are applied based on probability, every time the tta is run a different combination of the tta is applied so you get reasonably strong ensemble.</p>",
          "rawMarkdown": "as the augs are applied based on probability, every time the tta is run a different combination of the tta is applied so you get reasonably strong ensemble.",
          "votes": 2
        },
        {
          "id": 659241,
          "postDate": "2019-10-27T10:29:05.527Z",
          "content": "<p>Thanks a lot for the reply. But the albumentation library depends on the python random seed. Which we have already fixed. So isnt it going to be the same ? </p>",
          "rawMarkdown": "Thanks a lot for the reply. But the albumentation library depends on the python random seed. Which we have already fixed. So isnt it going to be the same ? "
        },
        {
          "id": 659512,
          "postDate": "2019-10-27T20:13:15.130Z",
          "content": "<p>it was fixed once at the beginning, from now on you will get a random sequence. The TTAs are called in sequence so each time you get a different sequence of TTAs. The seed only guarantee that you will get reproducible results. So, you fix the seed, do first pass, you get a sequence of different augs for each image. not when you do the second pass, the seed was not re-fixed, so you will get a different sequence. Hope this is clear.</p>",
          "rawMarkdown": "it was fixed once at the beginning, from now on you will get a random sequence. The TTAs are called in sequence so each time you get a different sequence of TTAs. The seed only guarantee that you will get reproducible results. So, you fix the seed, do first pass, you get a sequence of different augs for each image. not when you do the second pass, the seed was not re-fixed, so you will get a different sequence. Hope this is clear.",
          "votes": 1
        }
      ]
    },
    {
      "id": 659025,
      "postDate": "2019-10-27T00:30:57.740Z",
      "content": "<p>I am getting </p>\n\n<blockquote>\n  <p>making adjacent labels...\n    0%|                                                                                                                                                                             | 0/19530 [00:01main\", mod_spec)\n    File \"/home/ubuntu/anaconda3/envs/pytorch_p36/lib/python3.6/runpy.py\", line 85, in _run_code\n      exec(code, run_globals)\n    File \"/home/ubuntu/kaggle-rsna-intracranial-hemorrhage/src/preprocess/create_dataset.py\", line 102, in \n      main()\n    File \"/home/ubuntu/kaggle-rsna-intracranial-hemorrhage/src/preprocess/create_dataset.py\", line 87, in main\n      df = add_adjacent_labels(df)\n    File \"/home/ubuntu/kaggle-rsna-intracranial-hemorrhage/src/preprocess/create_dataset.py\", line 50, in add_adjacent_labels\n      labels = list(group.labels)\n    File \"/home/ubuntu/anaconda3/envs/pytorch_p36/lib/python3.6/site-packages/pandas/core/generic.py\", line 3610, in <strong>getattr</strong>\n      return object.<strong>getattribute</strong>(self, name)\n  AttributeError: 'DataFrame' object has no attribute 'labels'</p>\n</blockquote>\n\n<p><a href=\"/appian\">@appian</a> is there anything i am missing ? When I try to run your script </p>",
      "rawMarkdown": "I am getting \n\n&gt; making adjacent labels...\n  0%|                                                                                                                                                                             | 0/19530 [00:01\n    main()\n  File \"/home/ubuntu/kaggle-rsna-intracranial-hemorrhage/src/preprocess/create_dataset.py\", line 87, in main\n    df = add_adjacent_labels(df)\n  File \"/home/ubuntu/kaggle-rsna-intracranial-hemorrhage/src/preprocess/create_dataset.py\", line 50, in add_adjacent_labels\n    labels = list(group.labels)\n  File \"/home/ubuntu/anaconda3/envs/pytorch_p36/lib/python3.6/site-packages/pandas/core/generic.py\", line 3610, in __getattr__\n    return object.__getattribute__(self, name)\nAttributeError: 'DataFrame' object has no attribute 'labels'\n\n\n@appian is there anything i am missing ? When I try to run your script "
    },
    {
      "id": 657899,
      "postDate": "2019-10-25T13:58:27.463Z",
      "content": "<p>Thanks for your sharing, could I ask a question? In bin/predict001.sh, where is the test pkl come from? 'test=./model/${model}/fold${fold}_ep${ep}_test_tta${tta}.pkl'. <br>\nShould it be /cache/test.pkl or /cache/test_raw.pkl?\nThanks</p>",
      "rawMarkdown": "Thanks for your sharing, could I ask a question? In bin/predict001.sh, where is the test pkl come from? 'test=./model/${model}/fold${fold}_ep${ep}_test_tta${tta}.pkl'.  \nShould it be /cache/test.pkl or /cache/test_raw.pkl?\nThanks",
      "replies": [
        {
          "id": 658281,
          "postDate": "2019-10-25T21:36:12.790Z",
          "content": "<p><code>test.pkl</code> is given in <code>./conf/model001.py</code></p>",
          "rawMarkdown": "`test.pkl` is given in `./conf/model001.py`",
          "votes": 1
        },
        {
          "id": 658439,
          "postDate": "2019-10-26T02:18:30.463Z",
          "content": "<p>Thanks for your explanation. May I ask another question.\nThe loss weight setting in your code is '[2,1,1,1,1,1]', in the data, we have\nClass Labelnumbers\nany 97103\nepidural 2761\nintraparenchymal 32564\nintraventricular 23766\nsubarachnoid 32122\nsubdural 42496\nWhy should put more weight on 'any' than others?</p>",
          "rawMarkdown": "Thanks for your explanation. May I ask another question.\nThe loss weight setting in your code is '[2,1,1,1,1,1]', in the data, we have\nClass Labelnumbers\nany 97103\nepidural 2761\nintraparenchymal 32564\nintraventricular 23766\nsubarachnoid 32122\nsubdural 42496\nWhy should put more weight on 'any' than others?"
        },
        {
          "id": 660105,
          "postDate": "2019-10-28T17:27:10.427Z",
          "content": "<p><a href=\"/appian\">@appian</a>  i too had same q..</p>",
          "rawMarkdown": "@appian  i too had same q.."
        },
        {
          "id": 660119,
          "postDate": "2019-10-28T17:56:21.540Z",
          "content": "<p>The official evaluation page mentions that <code>any</code> class has higher weight, and someone on the forum was kind to do and share LB probing result where he discovered the higher weight is in fact 2.</p>",
          "rawMarkdown": "The official evaluation page mentions that `any` class has higher weight, and someone on the forum was kind to do and share LB probing result where he discovered the higher weight is in fact 2.",
          "votes": 2
        }
      ]
    },
    {
      "id": 657804,
      "postDate": "2019-10-25T12:39:41.173Z",
      "rawMarkdown": ""
    },
    {
      "id": 657649,
      "postDate": "2019-10-25T10:22:52.270Z",
      "content": "<p><a href=\"/appian\">@appian</a> thanks for sharing the tips..\nby averaging of folds u mean averaging the tta folds ?</p>",
      "rawMarkdown": "@appian thanks for sharing the tips..\nby averaging of folds u mean averaging the tta folds ?"
    },
    {
      "id": 656302,
      "postDate": "2019-10-24T06:05:29.430Z",
      "content": "<p>Thanks for sharing\nI've got an issue , may be you must carrefully install , python, pytorch, pretrainedmodels version ?</p>\n\n<blockquote>\n  <p>&gt;\n    run_nn(cfg.data.train, 'train', model, loader_train, criterion=criterion, optim=optim, apex=cfg.apex)\n    File \"/home/brunoconsult/RSNA-INTRACRANIAL/kaggle-rsna-intracranial-hemorrhage/src/cnn/main.py\", line 172, in run_nn\n      outputs = model(inputs)\n    File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 541, in <strong>call</strong>\n      result = self.forward(*input, **kwargs)\n  .......</p>\n</blockquote>\n\n<p>File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/conv.py\", line 345, in forward\n    return self.conv2d_forward(input, self.weight)\n  File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/conv.py\", line 342, in conv2d_forward\n    self.padding, self.dilation, self.groups)\nRuntimeError: Given groups=1, weight of size 64 3 7 7, expected input[28, 512, 512, 3] to have 3 channels, but got 512 channels instead</p>\n\n<p>Best Regards</p>",
      "rawMarkdown": "Thanks for sharing\nI've got an issue , may be you must carrefully install , python, pytorch, pretrainedmodels version ?\n\n&gt;&gt;\n  run_nn(cfg.data.train, 'train', model, loader_train, criterion=criterion, optim=optim, apex=cfg.apex)\n  File \"/home/brunoconsult/RSNA-INTRACRANIAL/kaggle-rsna-intracranial-hemorrhage/src/cnn/main.py\", line 172, in run_nn\n    outputs = model(inputs)\n  File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 541, in __call__\n    result = self.forward(*input, **kwargs)\n.......\n\n  File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/conv.py\", line 345, in forward\n    return self.conv2d_forward(input, self.weight)\n  File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/conv.py\", line 342, in conv2d_forward\n    self.padding, self.dilation, self.groups)\nRuntimeError: Given groups=1, weight of size 64 3 7 7, expected input[28, 512, 512, 3] to have 3 channels, but got 512 channels instead\n\nBest Regards\n",
      "replies": [
        {
          "id": 657034,
          "postDate": "2019-10-24T21:25:37.713Z",
          "content": "<p>Looks like you haven't applied Pytorch's ToTensor augmentation, you should have shape in format [CxHxW] just as this 64 3 7 7, where second dim is channels</p>",
          "rawMarkdown": "Looks like you haven't applied Pytorch's ToTensor augmentation, you should have shape in format [CxHxW] just as this 64 3 7 7, where second dim is channels",
          "votes": 2
        },
        {
          "id": 657849,
          "postDate": "2019-10-25T13:29:48.893Z",
          "content": "<p>Thanks for your help,\nI think I've the wrong versions of the different libs and pytorch 1.4.0_dev !!\nneed some reinstall in particular pytorch 1.3.0</p>",
          "rawMarkdown": "Thanks for your help,\nI think I've the wrong versions of the different libs and pytorch 1.4.0_dev !!\nneed some reinstall in particular pytorch 1.3.0\n"
        }
      ]
    },
    {
      "id": 653839,
      "postDate": "2019-10-21T03:22:45.377Z",
      "content": "<p>I can understand fold =1,2,3,4,5\nbut what's the meaning of fold=0 in your code?</p>",
      "rawMarkdown": "I can understand fold =1,2,3,4,5\nbut what's the meaning of fold=0 in your code?",
      "replies": [
        {
          "id": 654076,
          "postDate": "2019-10-21T12:15:43.373Z",
          "content": "<p>kfold mean.</p>",
          "rawMarkdown": "kfold mean."
        }
      ]
    },
    {
      "id": 653836,
      "postDate": "2019-10-21T03:20:20.400Z",
      "content": "<p>what's the difference between cfg.n_fold and cfg.fold in main.py?\nThanks~!</p>",
      "rawMarkdown": "what's the difference between cfg.n_fold and cfg.fold in main.py?\nThanks~!",
      "replies": [
        {
          "id": 656034,
          "postDate": "2019-10-23T20:22:54.173Z",
          "content": "<p>n_fold is the total number of folds to be done. \nfold is the fold number to be used for validation here. This is a zero fold normal train test split .</p>",
          "rawMarkdown": "n_fold is the total number of folds to be done. \nfold is the fold number to be used for validation here. This is a zero fold normal train test split ."
        }
      ]
    },
    {
      "id": 653076,
      "postDate": "2019-10-19T22:19:19.763Z",
      "content": "<p>Hi,\nrunning the script <code>train001.sh</code> appear to me that validation dataset is not created having 0 elements.\nFrom the log infact i get the following:\n<code>\nmode: train\nworkdir: ./model/model001\nfold: 5\nbatch size: 28\nacc: 1\nmodel: se_resnext50_32x4d\npretrained: imagenet\nloss: BCEWithLogitsLoss\noptim: Adam\ndataset_policy: all\nwindow_policy: 2\nread dataset (665414 records)\napplied dataset_policy all (665414 records)\nuse default(random) sampler\ndataset_policy: all\nwindow_policy: 2\nread dataset (0 records)\napplied dataset_policy all (0 records)\nuse default(random) sampler\ntrain data: loaded 665414 records\nvalid data: loaded 0 records\n</code></p>\n\n<p>Also in file <code>main.py</code> I see that the function <code>valid</code> is never called. Probably I miss something, but to my eyes appear that this code should not work. Please correct me where I am wrong.</p>",
      "rawMarkdown": "Hi,\nrunning the script `train001.sh` appear to me that validation dataset is not created having 0 elements.\nFrom the log infact i get the following:\n```\nmode: train\nworkdir: ./model/model001\nfold: 5\nbatch size: 28\nacc: 1\nmodel: se_resnext50_32x4d\npretrained: imagenet\nloss: BCEWithLogitsLoss\noptim: Adam\ndataset_policy: all\nwindow_policy: 2\nread dataset (665414 records)\napplied dataset_policy all (665414 records)\nuse default(random) sampler\ndataset_policy: all\nwindow_policy: 2\nread dataset (0 records)\napplied dataset_policy all (0 records)\nuse default(random) sampler\ntrain data: loaded 665414 records\nvalid data: loaded 0 records\n```\n\nAlso in file `main.py` I see that the function `valid` is never called. Probably I miss something, but to my eyes appear that this code should not work. Please correct me where I am wrong.",
      "replies": [
        {
          "id": 653524,
          "postDate": "2019-10-20T15:25:10.057Z",
          "content": "<p><code>valid</code> function can be used when you want to do validation using a snapshot and save prediction to a file.\nIn <code>train</code> function, it does validation every epoch.\nRegarding the error, it's hard to say anything based on the information you provided. Could you provide a diff?</p>",
          "rawMarkdown": "`valid` function can be used when you want to do validation using a snapshot and save prediction to a file.\nIn `train` function, it does validation every epoch.\nRegarding the error, it's hard to say anything based on the information you provided. Could you provide a diff?\n",
          "votes": 1
        },
        {
          "id": 653634,
          "postDate": "2019-10-20T18:29:15.970Z",
          "content": "<p>Hi, I try to report my debug outputs.\nwhen I run<code>python3 -m main train ./conf/model001.py --fold 5 --gpu 0 --n-tta 5</code>\nthe file main.py run epoch 0 correctly </p>\n\n<p>After that, the code line 134 \n<code>val = run_nn(cfg.data.valid, 'valid', model, loader_valid, criterion=criterion)</code>\njump in an error \n<code>File \"/media/alberto/50C03782C0376D7A/RSNA/main.py\", line 205, in run_nn\n    'loss': np.sum(losses) / (i+1),\nUnboundLocalError: local variable 'i' referenced before assignment</code></p>\n\n<p>To my eyes it is  because <code>len(loader_valid.dataset) =0</code> as visible in the above log.\nDue to that the line 166 <code>for i, (inputs, targets, ids) in enumerate(loader):</code> doesn't run end the final error is reporting the index 'i' not assigned.\nTo my eyes  <code>len(loader_valid.dataset)</code> should be !=0 but I did not seen where it is populated. </p>\n\n<p>I do believe I recognized my mistake. In the command line of main.py I put fold=5 but it is wrong. I need to use fold=0 or 1 or 2 or 3 or 4 . Is it used as the portion for validation in all epoch, am I right ?</p>",
          "rawMarkdown": "Hi, I try to report my debug outputs.\nwhen I run` python3 -m main train ./conf/model001.py --fold 5 --gpu 0 --n-tta 5`\nthe file main.py run epoch 0 correctly \n\nAfter that, the code line 134 \n`val = run_nn(cfg.data.valid, 'valid', model, loader_valid, criterion=criterion)`\njump in an error \n`File \"/media/alberto/50C03782C0376D7A/RSNA/main.py\", line 205, in run_nn\n    'loss': np.sum(losses) / (i+1),\nUnboundLocalError: local variable 'i' referenced before assignment`\n\nTo my eyes it is  because `len(loader_valid.dataset) =0` as visible in the above log.\nDue to that the line 166 `for i, (inputs, targets, ids) in enumerate(loader):` doesn't run end the final error is reporting the index 'i' not assigned.\nTo my eyes  `len(loader_valid.dataset) ` should be !=0 but I did not seen where it is populated. \n\nI do believe I recognized my mistake. In the command line of main.py I put fold=5 but it is wrong. I need to use fold=0 or 1 or 2 or 3 or 4 . Is it used as the portion for validation in all epoch, am I right ?",
          "votes": 1
        },
        {
          "id": 653853,
          "postDate": "2019-10-21T04:00:35.907Z",
          "content": "<p>It seems there are two similar variable.\nfold in train001.sh\nn_fold in model001.py\nif you want 5 folds.\nit's better to modify the n_fold in model001.py</p>",
          "rawMarkdown": "It seems there are two similar variable.\nfold in train001.sh\nn_fold in model001.py\nif you want 5 folds.\nit's better to modify the n_fold in model001.py",
          "votes": 1
        },
        {
          "id": 653858,
          "postDate": "2019-10-21T04:15:08.140Z",
          "content": "<p>Thank you for providing more information.\n<code>--fold 5</code> is the wrong part. Because it uses 5 folds(n_fold=5) and each fold is counted from 0 to 4, 5 is out of range and it ends up using all data for training.</p>",
          "rawMarkdown": "Thank you for providing more information.\n`--fold 5` is the wrong part. Because it uses 5 folds(n_fold=5) and each fold is counted from 0 to 4, 5 is out of range and it ends up using all data for training.",
          "votes": 2
        }
      ]
    },
    {
      "id": 652543,
      "postDate": "2019-10-19T02:48:10.377Z",
      "content": "<p>＠appian\nI modify the path in your bin folder and run it in kaggle notebook.</p>\n\n<h2>but it stuck in progress bar.here is the log:</h2>\n\n<p>total 16\n-rw-r--r-- 1 root root 2934 Oct 19 02:37 README.md\ndrwxr-xr-x 2 root root 4096 Oct 19 02:37 bin\ndrwxr-xr-x 2 root root 4096 Oct 19 02:37 conf\ndrwxr-xr-x 6 root root 4096 Oct 19 02:37 src\n['/kaggle/working/RSNA666/src/preprocess/dicom_to_dataframe.py', '--input', '/kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train.csv', '--output', '/kaggle/input/train_raw.pkl', '--imgdir', '/kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train_images']\nread /kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train.csv (4045572 records)\n100%|█████████████████████████████| 4045572/4045572 [00:14&lt;00:00, 278177.31it/s]\nremoved ID_6431af929\nmaking records...\nargs.n_pool= 4\n------1--------\n  0%|  | 0/674257 [00:00</p>\n\n<p>please help,Thanks</p>",
      "rawMarkdown": "＠appian\nI modify the path in your bin folder and run it in kaggle notebook.\nbut it stuck in progress bar.here is the log:\n-----------------------------------------------------------\ntotal 16\n-rw-r--r-- 1 root root 2934 Oct 19 02:37 README.md\ndrwxr-xr-x 2 root root 4096 Oct 19 02:37 bin\ndrwxr-xr-x 2 root root 4096 Oct 19 02:37 conf\ndrwxr-xr-x 6 root root 4096 Oct 19 02:37 src\n['/kaggle/working/RSNA666/src/preprocess/dicom_to_dataframe.py', '--input', '/kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train.csv', '--output', '/kaggle/input/train_raw.pkl', '--imgdir', '/kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train_images']\nread /kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train.csv (4045572 records)\n100%|█████████████████████████████| 4045572/4045572 [00:14&lt;00:00, 278177.31it/s]\nremoved ID_6431af929\nmaking records...\nargs.n_pool= 4\n------1--------\n  0%|  | 0/674257 [00:00\n\n\nplease help,Thanks",
      "replies": [
        {
          "id": 652639,
          "postDate": "2019-10-19T06:43:23.807Z",
          "content": "<p>this code need many time, kernel is not enough.</p>",
          "rawMarkdown": "this code need many time, kernel is not enough.",
          "votes": 2
        },
        {
          "id": 652700,
          "postDate": "2019-10-19T08:54:55.827Z",
          "content": "<p>you can try running each stage of the pre process in a kernel by itself and use the output in another. use cpu only kernels as it does not use gpu and the cpu kernels have more memory and cores. It won't be easy but its doable I think</p>",
          "rawMarkdown": "you can try running each stage of the pre process in a kernel by itself and use the output in another. use cpu only kernels as it does not use gpu and the cpu kernels have more memory and cores. It won't be easy but its doable I think",
          "votes": 1
        },
        {
          "id": 652860,
          "postDate": "2019-10-19T13:57:07.920Z",
          "content": "<p>It looks like it stops running when it uses multiprocessing for dealing with images. I've never tried running it on kaggle kernels and not sure what the problem is. Maybe you can run it without multiprocessing? You can at least narrow down where the problem is.</p>",
          "rawMarkdown": "It looks like it stops running when it uses multiprocessing for dealing with images. I've never tried running it on kaggle kernels and not sure what the problem is. Maybe you can run it without multiprocessing? You can at least narrow down where the problem is.",
          "votes": 1
        }
      ]
    },
    {
      "id": 651622,
      "postDate": "2019-10-17T17:21:59.263Z",
      "content": "<p><a href=\"/appian\">@appian</a> are you using calc_loss to simulate accurate cv scores? If so, why do you have eps 1e-5 as default - shouldn't it be 1e-15? which loss are you using to gauge your lb correlation? the pytorch loss or the calc_loss?</p>",
      "rawMarkdown": "@appian are you using calc\\_loss to simulate accurate cv scores? If so, why do you have eps 1e-5 as default - shouldn't it be 1e-15? which loss are you using to gauge your lb correlation? the pytorch loss or the calc\\_loss?",
      "replies": [
        {
          "id": 652212,
          "postDate": "2019-10-18T14:18:41.407Z",
          "content": "<p>I use calc_logloss as cv score which is supposed to correlate with LB. \n1e-5 is used to cap the extreme values because 1e-15 is still extreme enough to me. 1e-15 does nothing after you cap the values with larger eps.</p>",
          "rawMarkdown": "I use calc_logloss as cv score which is supposed to correlate with LB. \n1e-5 is used to cap the extreme values because 1e-15 is still extreme enough to me. 1e-15 does nothing after you cap the values with larger eps.",
          "votes": 3
        }
      ]
    },
    {
      "id": 656164,
      "postDate": "2019-10-24T01:06:53.113Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 652189,
      "postDate": "2019-10-18T13:41:58.337Z",
      "rawMarkdown": "",
      "votes": -2,
      "isDeleted": true
    },
    {
      "id": 651236,
      "postDate": "2019-10-17T08:01:10.277Z",
      "rawMarkdown": "",
      "isDeleted": true,
      "replies": [
        {
          "id": 651249,
          "postDate": "2019-10-17T08:22:49.957Z",
          "content": "<p>Scroll down and you ll find the answer.\n[Let's see if you will delete your comment after you find it]</p>",
          "rawMarkdown": "Scroll down and you ll find the answer.\n[Let's see if you will delete your comment after you find it]",
          "votes": 1
        },
        {
          "id": 651285,
          "postDate": "2019-10-17T09:28:53.237Z",
          "content": "<p>I am curious what the question was now ....</p>",
          "rawMarkdown": "I am curious what the question was now ....",
          "votes": 1
        },
        {
          "id": 651323,
          "postDate": "2019-10-17T10:37:32.473Z",
          "content": "<p>The question was what is TTA? </p>\n\n<p>I decided not to answer it directly but to tell will where to find it. This is like 10th time it's happening :)</p>",
          "rawMarkdown": "The question was what is TTA? \n\nI decided not to answer it directly but to tell will where to find it. This is like 10th time it's happening :)",
          "votes": 1
        }
      ]
    },
    {
      "id": 650214,
      "postDate": "2019-10-16T07:34:52.093Z",
      "rawMarkdown": "",
      "votes": -5,
      "isDeleted": true
    },
    {
      "id": 649638,
      "postDate": "2019-10-15T15:42:49.447Z",
      "rawMarkdown": "",
      "votes": -2,
      "isDeleted": true
    },
    {
      "id": 650078,
      "postDate": "2019-10-16T04:23:36.873Z",
      "content": "<p>Thanks for destroying the competition!</p>",
      "rawMarkdown": "Thanks for destroying the competition!",
      "votes": 21
    },
    {
      "id": 654036,
      "postDate": "2019-10-21T10:50:48.420Z",
      "content": "<p>thank you so much</p>",
      "rawMarkdown": "thank you so much",
      "votes": 1
    },
    {
      "id": 653491,
      "postDate": "2019-10-20T14:43:42.290Z",
      "content": "<p>Thanks all</p>",
      "rawMarkdown": "Thanks all\n",
      "votes": 1
    },
    {
      "id": 652859,
      "postDate": "2019-10-19T13:55:48.690Z",
      "content": "<p>thanks for sharing!</p>",
      "rawMarkdown": "thanks for sharing!"
    },
    {
      "id": 650991,
      "postDate": "2019-10-16T23:32:24.417Z",
      "content": "<p>THANKS</p>",
      "rawMarkdown": "THANKS"
    },
    {
      "id": 655545,
      "postDate": "2019-10-23T06:49:56.560Z",
      "content": "<p>wonderful thanks fro sharing.</p>",
      "rawMarkdown": "wonderful thanks fro sharing.",
      "votes": 2
    },
    {
      "id": 655468,
      "postDate": "2019-10-23T04:44:14.887Z",
      "content": "<p>Thanks for sharing!</p>",
      "rawMarkdown": "Thanks for sharing!",
      "votes": 2
    },
    {
      "id": 653865,
      "postDate": "2019-10-21T04:42:39.863Z",
      "content": "<p>Thanks for sharing. Really helped.</p>",
      "rawMarkdown": "Thanks for sharing. Really helped."
    },
    {
      "id": 653830,
      "postDate": "2019-10-21T02:48:34.507Z",
      "content": "<p>Thanks, Really helped</p>",
      "rawMarkdown": "Thanks, Really helped"
    },
    {
      "id": 652745,
      "postDate": "2019-10-19T10:56:01.077Z",
      "content": "<p>Thanks for sharing.</p>",
      "rawMarkdown": "Thanks for sharing."
    },
    {
      "id": 652734,
      "postDate": "2019-10-19T10:44:11.460Z",
      "content": "<p>Thanks</p>",
      "rawMarkdown": "Thanks"
    },
    {
      "id": 651000,
      "postDate": "2019-10-17T00:23:17.393Z",
      "content": "<p>Thanks a lot for your sharing</p>",
      "rawMarkdown": "Thanks a lot for your sharing"
    },
    {
      "id": 650680,
      "postDate": "2019-10-16T15:42:20.773Z",
      "content": "<p>Thank you for sharing!</p>",
      "rawMarkdown": "Thank you for sharing!"
    },
    {
      "id": 654904,
      "postDate": "2019-10-22T13:16:02.280Z",
      "content": "<p>Thank you for sharing</p>",
      "rawMarkdown": "Thank you for sharing"
    },
    {
      "id": 654174,
      "postDate": "2019-10-21T14:51:28.447Z",
      "content": "<p>thanks</p>",
      "rawMarkdown": "thanks"
    },
    {
      "id": 652487,
      "postDate": "2019-10-18T23:10:10.223Z",
      "content": "<p>Thanks.</p>",
      "rawMarkdown": "Thanks."
    },
    {
      "id": 652443,
      "postDate": "2019-10-18T21:15:18.160Z",
      "content": "<p>Thanks for sharing. </p>",
      "rawMarkdown": "Thanks for sharing. ",
      "votes": -2
    },
    {
      "id": 652861,
      "postDate": "2019-10-19T13:57:36.603Z",
      "content": "<p>thanks for sharing!</p>",
      "rawMarkdown": "thanks for sharing!",
      "votes": -1
    },
    {
      "id": 650986,
      "postDate": "2019-10-16T23:10:30.557Z",
      "content": "<p>Thanks for sharing.</p>",
      "rawMarkdown": "Thanks for sharing.",
      "votes": -2
    },
    {
      "id": 652657,
      "postDate": "2019-10-19T07:35:57.057Z",
      "content": "<p>thanks for sharing</p>",
      "rawMarkdown": "thanks for sharing",
      "votes": -2
    },
    {
      "id": 651885,
      "postDate": "2019-10-18T03:31:20.683Z",
      "content": "<p>Thanks so much for sharing</p>",
      "rawMarkdown": "Thanks so much for sharing",
      "votes": -7
    },
    {
      "id": 651374,
      "postDate": "2019-10-17T12:21:28.913Z",
      "content": "<p>thanks for sharing </p>",
      "rawMarkdown": "thanks for sharing ",
      "votes": -7
    },
    {
      "id": 660032,
      "postDate": "2019-10-28T15:22:51.627Z",
      "content": "<p>Thank you for sharing</p>",
      "rawMarkdown": "Thank you for sharing"
    },
    {
      "id": 659375,
      "postDate": "2019-10-27T14:37:54.513Z",
      "content": "<p>Wonderful! Thanks for your tip.</p>",
      "rawMarkdown": "Wonderful! Thanks for your tip."
    },
    {
      "id": 657474,
      "postDate": "2019-10-25T07:09:10.460Z",
      "content": "<p>Thanks for sharing</p>",
      "rawMarkdown": "Thanks for sharing"
    },
    {
      "id": 656010,
      "postDate": "2019-10-23T19:40:11.757Z",
      "content": "<p>Thanks for sharing!</p>",
      "rawMarkdown": "Thanks for sharing!"
    }
  ],
  "comments": [
    {
      "id": 650648,
      "author_name": "Appian",
      "author_url": "",
      "post_date": "2019-10-16T15:11:33.170000",
      "content": "<p>Thank you for all the feedbacks. Let me explain a few points.</p>\n\n<ul>\n<li>We are allowed to share our ideas, codes, solutions during the competition as long as it's not the last week of the competition. We had three weeks and thought it was no problem.</li>\n<li>I learn a lot from source code someone shares during a competition. Kernels, ideas are very helpful too but the most helpful one for me was the complete pipeline because I was able to learn how to structure the project while doing the competition. I learn here and I'd like to share too. </li>\n</ul>\n\n<p>That being said, I now see all of your concerns and I will be more careful with this.</p>",
      "votes": 37,
      "replies": [
        {
          "id": 651166,
          "author_name": "Ryan Epp",
          "author_url": "",
          "post_date": "2019-10-17T06:10:53.327000",
          "content": "<p>[deleted]</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 651373,
          "author_name": "interneuron",
          "author_url": "",
          "post_date": "2019-10-17T12:20:54.363000",
          "content": "<p>Thanks for sharing this Appian. The source organization is the really valuable thing here as you noted. I think it’s early enough in the competition for this to become a solid baseline rather than a LB destroyer, though I do understand why people might get upset about this. </p>\n\n<p>This sort of thing really is the best kind of educational resource one can find through Kaggle, and it still would be even if posted after the competition. </p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 650536,
      "author_name": "AmardeepGanguly",
      "author_url": "",
      "post_date": "2019-10-16T13:36:56.727000",
      "content": "<p>I was stuck with  a score of 0.81 for weeks and secondly my only resource for GPU are kaggle kernels,so i can experiment with 4 different configurations  in a week being a student i could not avail the GCP credits as i dont have a credit card(so participating in this competition is already tricky for someone like me),I have lost every bit of motivation for participating in this contest with  this \"code Sharing\",You could have shared some code for windowing that would have been  educational ,but now that you have shared an entire repository most of the guys wont bother to understand the stuff ,Copy and paste and bang!!!! 100 people with 0.66 scores .Kaggle should be more strict in making sure  that this does not happen again,.Downvote if you have issues with such a long comment i just dont care.</p>",
      "votes": 20,
      "replies": [
        {
          "id": 650552,
          "author_name": "DrHB",
          "author_url": "",
          "post_date": "2019-10-16T13:56:39.237000",
          "content": "<p>Nobody has issues with your comments=) Everything what you said is on point. This happens already on several other competitions. The only thing we can do as community is raise our voices and discourage this kind of behavior. </p>",
          "votes": 7,
          "replies": []
        },
        {
          "id": 657645,
          "author_name": "Jaideep",
          "author_url": "",
          "post_date": "2019-10-25T10:21:06.143000",
          "content": "<p>i m too coming from one such competition where in my current score would landed me up in top 100 ,due to highscore kernel many copiers got into top 150</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 649832,
      "author_name": "Oleg Yaroshevskiy",
      "author_url": "",
      "post_date": "2019-10-15T19:53:36.463000",
      "content": "<p>But why to distort leaderboard with open source solution??\nThat's just not alright.</p>",
      "votes": 16,
      "replies": []
    },
    {
      "id": 649736,
      "author_name": "Dmytro Panchenko",
      "author_url": "",
      "post_date": "2019-10-15T18:04:35.953000",
      "content": "<p>&gt;tips</p>\n\n<p>&gt;full code on github</p>\n\n<p>You have a nice sense of humor :)</p>",
      "votes": 13,
      "replies": []
    },
    {
      "id": 650452,
      "author_name": "Finlay",
      "author_url": "",
      "post_date": "2019-10-16T12:05:19.403000",
      "content": "<p>if you want train all the data, you need check custom_dataset.py file.\nlike this:\n<code>\n        self.df = apply_dataset_policy(self.df, self.cfg.dataset_policy)\n        # self.df = self.df.sample(560)\n</code></p>",
      "votes": 10,
      "replies": [
        {
          "id": 650649,
          "author_name": "Appian",
          "author_url": "",
          "post_date": "2019-10-16T15:13:26.090000",
          "content": "<p>Thank you for pointing this out. I did this to see the code runs without problems but forgot to uncomment. </p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 650533,
      "author_name": "Ivan V.",
      "author_url": "",
      "post_date": "2019-10-16T13:32:39.147000",
      "content": "<p>don't waste your time with this pipeline</p>",
      "votes": 7,
      "replies": []
    },
    {
      "id": 650077,
      "author_name": "NguyenThanhNhan",
      "author_url": "",
      "post_date": "2019-10-16T04:21:46.297000",
      "content": "<p>This isn't alright. I dont' quite understand how people can give so many upvotes to this post. Last year, in the TGS competition, the Neptune team faced with lots of negative reaction even though they only released a \"silver\" zone code base. <br>\nThanks to your kindness, somebody with computing resources just needs to clone the code and easily gets good ranking 🙂 </p>",
      "votes": 7,
      "replies": []
    },
    {
      "id": 662108,
      "author_name": "Alimbekov Renat [dsmlkz]",
      "author_url": "",
      "post_date": "2019-10-31T05:01:37.503000",
      "content": "<p><a href=\"/appian\">@appian</a> it's time to share  0.058 code 🤔 </p>",
      "votes": 7,
      "replies": [
        {
          "id": 662123,
          "author_name": "Ryan Epp",
          "author_url": "",
          "post_date": "2019-10-31T05:42:42.330000",
          "content": "<p>Or what about November 12? I feel like that'd be a better time...</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 662129,
          "author_name": "Alimbekov Renat [dsmlkz]",
          "author_url": "",
          "post_date": "2019-10-31T05:54:00.450000",
          "content": "<p>Don't be so seriuos</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 662438,
          "author_name": "Ryan Epp",
          "author_url": "",
          "post_date": "2019-10-31T14:55:52.990000",
          "content": "<p>Haha, whoops. I thought you were being serious. 😆</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 650417,
      "author_name": "Igor Krashenyi",
      "author_url": "",
      "post_date": "2019-10-16T11:02:02.120000",
      "content": "<p>Could you please explain the motivation of doing this​?​ </p>",
      "votes": 7,
      "replies": []
    },
    {
      "id": 652423,
      "author_name": "Yifeng (Ethan) Zou",
      "author_url": "",
      "post_date": "2019-10-18T20:46:56.083000",
      "content": "<p>Normally I wouldn't be so annoyed by things like this, but for competition with dataset of this magnitude, posting a solution that has a higher score than most people, even with bronze on public lb, is basically forcing people to spend hours and hours training this specific model. This leads to less diversified models, lower likelihood of brilliant unique solutions, and most importantly, less interesting competition.</p>",
      "votes": 5,
      "replies": [
        {
          "id": 652533,
          "author_name": "Ryan Epp",
          "author_url": "",
          "post_date": "2019-10-19T02:26:40.913000",
          "content": "<p>I guess the eco-friendly thing would be to just post the submission file and save everyone the time and electricity. 😋 </p>",
          "votes": 7,
          "replies": []
        }
      ]
    },
    {
      "id": 650577,
      "author_name": "sally",
      "author_url": "",
      "post_date": "2019-10-16T14:16:47.397000",
      "content": "<p>Thanks for sharing. I get 0.5 on LB by this pipeline, and wasted one chance of my submission :P Don't waste your time with this pipeline.</p>",
      "votes": 4,
      "replies": [
        {
          "id": 650579,
          "author_name": "Ivan V.",
          "author_url": "",
          "post_date": "2019-10-16T14:17:56.200000",
          "content": "<p>the same</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 650608,
          "author_name": "tik_boa",
          "author_url": "",
          "post_date": "2019-10-16T14:41:23.997000",
          "content": "<p>So, This sharing  does not reach 0.066?</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 650618,
          "author_name": "Eek The Cat",
          "author_url": "",
          "post_date": "2019-10-16T14:49:04.913000",
          "content": "<p>Haven't tested the code myself, but from my experience with this competition the only way you can get score above 0.4 is by messing up the labels</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 650621,
          "author_name": "sally",
          "author_url": "",
          "post_date": "2019-10-16T14:50:27.130000",
          "content": "<p>No, it does not.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 651058,
          "author_name": "Amil Gentili",
          "author_url": "",
          "post_date": "2019-10-17T02:12:32.073000",
          "content": "<p>If you run it without looking at the code, you probably get 0.4, but if you study the code, you may learn a lot. </p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 649787,
      "author_name": "Sergey Zlobin",
      "author_url": "",
      "post_date": "2019-10-15T18:40:29.433000",
      "content": "<p>Thanks for your \"baseline\"! I think a lot of people (incl. me) can learn from it.\nI'm a little bit shocked however, since it is a competition and the result is very strong.</p>",
      "votes": 4,
      "replies": []
    },
    {
      "id": 650031,
      "author_name": "Felipe Loque",
      "author_url": "",
      "post_date": "2019-10-16T02:56:37.937000",
      "content": "<p>Do you prefer a discussion gold medal than a competition gold medal?</p>",
      "votes": 5,
      "replies": []
    },
    {
      "id": 650348,
      "author_name": "cherring",
      "author_url": "",
      "post_date": "2019-10-16T09:41:27.667000",
      "content": "<p>Another fucking one - goddamn it. I guess I wont bother with this competition.</p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 653842,
      "author_name": "Neuron Engineer",
      "author_url": "",
      "post_date": "2019-10-21T03:28:32.267000",
      "content": "<p>Hi <a href=\"/appian\">@appian</a> , I am sorry for this dumb question ;)</p>\n\n<p><code>image = np.array([\n            image1 - image1.mean(),\n            image2 - image2.mean(),\n            image3 - image3.mean(),\n        ]) \n</code>\nDo I understand correctly that you minus different means for each individual image?\n(I have been confused on this point on other competitions too — I thought we should apply <em>channel means</em> calculated from all data )</p>",
      "votes": 3,
      "replies": [
        {
          "id": 653854,
          "author_name": "Tian Bingyang",
          "author_url": "",
          "post_date": "2019-10-21T04:01:41.460000",
          "content": "<p>No,it's used for different part of each picture.\ne.g. brain,bone blood..</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 653856,
          "author_name": "Appian",
          "author_url": "",
          "post_date": "2019-10-21T04:09:09.960000",
          "content": "<p>Hi Neuron, </p>\n\n<p>Thank you for pointing this out.\nNow I realized I made a mistake and you are right.</p>\n\n<p>I meant to use min-max normalization.\nFor policy == 2, this part is I think okay, \n<code>\nimage1 = (image1 - 0) / 80\nimage2 = (image2 - (-20)) / 200\nimage3 = (image3 - (-150)) / 380\n</code></p>\n\n<p>But as you metioned, \n<code>\nimage = np.array([\n    image1 - image1.mean(),\n    image2 - image2.mean(),\n    image3 - image3.mean(),\n])\n</code>\nthis does not make sense and should be just <code>image = np.array([image1, image2, image3])</code>.</p>\n\n<p>And yes, you can use z-score normalization (by calculating mean and std from all data) instead of this too.</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 653861,
          "author_name": "Neuron Engineer",
          "author_url": "",
          "post_date": "2019-10-21T04:23:23.480000",
          "content": "<p>Thanks <a href=\"/appian\">@appian</a> ! I am a bit relieved that I don’t fundamentally misunderstand something :D</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 658544,
          "author_name": "Jaideep",
          "author_url": "",
          "post_date": "2019-10-26T06:17:34.207000",
          "content": "<p>1) <a href=\"/appian\">@appian</a> coud u point me how are u normalizing the images .. based on which stats ?\n2) i see you are generating the folds based on patient id. Should we do train test split based on the subtype pos count ?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 660415,
          "author_name": "Ram Ramrakhya",
          "author_url": "",
          "post_date": "2019-10-29T05:07:22.230000",
          "content": "<p><a href=\"/appian\">@appian</a> Can I ask why is this part correct for <code>policy == 1</code>. Sorry for the dumb question\n<code>\nimage = np.array([\n    image1 - image1.mean(),\n    image2 - image2.mean(),\n    image3 - image3.mean(),\n])\n</code></p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 660619,
          "author_name": "Appian",
          "author_url": "",
          "post_date": "2019-10-29T11:30:30.993000",
          "content": "<p><a href=\"/axel81\">@axel81</a>\nI think that part is not good too.\nI did not mention because that part is not used in the code.\nUnlike <code>policy == 2</code>, <code>policy == 1</code> uses doctor's custom window and min-max normalization might not be a good idea because max value and min value varies image to image.</p>\n\n<p><a href=\"/jaideepvalani\">@jaideepvalani</a> \nYou can normalize them using each channel's mean and std values calculated from all images.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 650331,
      "author_name": "Finlay",
      "author_url": "",
      "post_date": "2019-10-16T09:27:39.727000",
      "content": "<p>in main.py\ntorch.backends.cudnn.deterministic = True\nThis will more slow than set False.</p>",
      "votes": 3,
      "replies": [
        {
          "id": 653349,
          "author_name": "AlGiLa",
          "author_url": "",
          "post_date": "2019-10-20T09:45:15.013000",
          "content": "<p>Hi,\nWhat is the reason to set at True being slow instead of set False to be faster ?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 653359,
          "author_name": "Moshel",
          "author_url": "",
          "post_date": "2019-10-20T10:15:30.013000",
          "content": "<p>The deterministic flag is to help reproduce results. Usually gpu cores work in semi chaotic order, producing slightly different results if you run the same training twice (even with the same random seeds everywhere else). The deterministic flag cause cudnn the produce the same result if you rerun it with the same inputs twice. in doing so, you lose a bit of speed as concurrency is more limited. At least that is my understanding....</p>",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 650246,
      "author_name": "Lex Toumbourou",
      "author_url": "",
      "post_date": "2019-10-16T08:06:58.917000",
      "content": "<p>Even though it is super rude to release a solution like this, everything in it has been discussed on the forums and in kernels. My one fold score without tta is pretty close with 224x224 images and a far smaller architecture, and there's still so many things to try. I predict the final gold medal loss is going to be a lot lower.</p>",
      "votes": 4,
      "replies": []
    },
    {
      "id": 649633,
      "author_name": "Salaryman",
      "author_url": "",
      "post_date": "2019-10-15T15:39:52.360000",
      "content": "<p>thanks so much for your generous sharing.\nSince the competition is still ongoing, just curious would it be better to share the idea of how to improve the score, instead of directly uploading the whole source code?\npeople may copy and make submission without thinking😆 </p>",
      "votes": 4,
      "replies": [
        {
          "id": 649692,
          "author_name": "DrHB",
          "author_url": "",
          "post_date": "2019-10-15T17:02:28.173000",
          "content": "<p>I totally agree with you.. =) But to play devils advocate sharing kernel is the same...</p>\n\n<p>But my  concern is that this code executed correctly puts you at 11 place... which is gold medal... </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 649701,
          "author_name": "Eek The Cat",
          "author_url": "",
          "post_date": "2019-10-15T17:18:18",
          "content": "<p>Gold medal as of today, still a month to go, not to forget stage 2</p>",
          "votes": -4,
          "replies": []
        },
        {
          "id": 649849,
          "author_name": "DrHB",
          "author_url": "",
          "post_date": "2019-10-15T20:29:22.787000",
          "content": "<p>This timeline might be true for other competitions where you have small dataset. But here decent model need to  train up to 4-5 days. </p>\n\n<p>Also I am pretty sure if I will upload my GitHub repo code which gives 1st place... (for now)  People will have very negative reaction. </p>",
          "votes": 9,
          "replies": []
        },
        {
          "id": 649856,
          "author_name": "Oleg Yaroshevskiy",
          "author_url": "",
          "post_date": "2019-10-15T20:44:37.437000",
          "content": "<p>Exactly. \nI believe that without this solution 0.66 score might give you silver/bronze by the end. \nNot respectful \"tips\". </p>",
          "votes": 5,
          "replies": []
        },
        {
          "id": 649860,
          "author_name": "Dmytro Panchenko",
          "author_url": "",
          "post_date": "2019-10-15T20:49:59.293000",
          "content": "<p>Another argument against such sharing of solutions is that despite the fact that the pipeline takes only a couple of days to train, it is actually backed by <strong>weeks of experiments</strong> we know nothing about.</p>\n\n<p>As a result now it will be relatively easy to achieve 0.066 score, but since most of us don't have any intuition behind this code, it will be still quite hard to beat it.</p>\n\n<p>So I have a feeling that aftershock of publishing this repo will be present even in the final leaderboard (especially in the upper-silver tier), and I don't think that such sharing was a wise thing to do.</p>",
          "votes": 11,
          "replies": []
        },
        {
          "id": 650032,
          "author_name": "datasaurus",
          "author_url": "",
          "post_date": "2019-10-16T02:56:50.690000",
          "content": "<p>It would have been better to share non-working code. All of Heng's starter kits require quite a bit of homework before anything will run, and are more educational as a result</p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 650172,
          "author_name": "Salaryman",
          "author_url": "",
          "post_date": "2019-10-16T06:51:41.603000",
          "content": "<p>Anyways I really admire Appian's spirit of sharing.\nAlthough I really want a Kaggle medal to prove myself, I may not continue this competition as I feel like I already read the answer before answering a question😆 </p>\n\n<p>I cant imagine what will happen to the leaderboard after one week😹 </p>",
          "votes": -4,
          "replies": []
        },
        {
          "id": 650202,
          "author_name": "Sergey Zlobin",
          "author_url": "",
          "post_date": "2019-10-16T07:21:08.167000",
          "content": "<blockquote>\n  <p>I feel like I already read the answer before answering a question</p>\n</blockquote>\n\n<p>Yeah, it's the good analogy.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 651695,
      "author_name": "Caio Dias",
      "author_url": "",
      "post_date": "2019-10-17T20:03:59.853000",
      "content": "<p>I undestand people getting upset, but from a point of view of someone who is trying to learn, thanks for sharing some good code</p>",
      "votes": 3,
      "replies": [
        {
          "id": 652070,
          "author_name": "Elvis",
          "author_url": "",
          "post_date": "2019-10-18T09:32:39.857000",
          "content": "<p>Maybe I don't understand something but I as a person who is trying to learn usually wait for competition end and then spend time to explore public solutions. It shouldn't make the difference to learn now or afterwards</p>",
          "votes": 5,
          "replies": []
        },
        {
          "id": 652435,
          "author_name": "Yifeng (Ethan) Zou",
          "author_url": "",
          "post_date": "2019-10-18T20:58:06.530000",
          "content": "<p><a href=\"/elvis1992\">@elvis1992</a> has got a solid point. For beginners, it may be of better interest to learn from top solutions in past competitions and try them out yourself with the late submission feature.</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 651340,
      "author_name": "Elvis",
      "author_url": "",
      "post_date": "2019-10-17T11:18:30.687000",
      "content": "<p>Don't worry guys. I believe there are two special places in DS hell: for people who publish such things and a separate one for those who up-vote feeding this madness.</p>",
      "votes": 2,
      "replies": [
        {
          "id": 651341,
          "author_name": "DrHB",
          "author_url": "",
          "post_date": "2019-10-17T11:23:49.323000",
          "content": "<p><strong>ds hell</strong> :)\nI wonder what kind of tortures are in there ? </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 651358,
          "author_name": "Dmytro Panchenko",
          "author_url": "",
          "post_date": "2019-10-17T11:57:19.497000",
          "content": "<p>Backproping your CNNs by hand on a whiteboard?</p>",
          "votes": 11,
          "replies": []
        },
        {
          "id": 651367,
          "author_name": "Felipe Loque",
          "author_url": "",
          "post_date": "2019-10-17T12:09:43.943000",
          "content": "<p><strong>DS hell</strong>\nRunning CNN on CPU 😄 </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 651372,
          "author_name": "cherring",
          "author_url": "",
          "post_date": "2019-10-17T12:16:37.250000",
          "content": "<p>Pretty sure it is just a symbolic API that runs over the top of native hell</p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 651386,
      "author_name": "n01z3",
      "author_url": "",
      "post_date": "2019-10-17T12:45:19.467000",
      "content": "<p>I reproduced the results. Thank's a lot!\nI also agree with the dissatisfied participants and feel a little guilty. But I do not know what can be done about it.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 649913,
      "author_name": "Tom Aindow",
      "author_url": "",
      "post_date": "2019-10-15T22:30:05.033000",
      "content": "<p>Interesting decision to dump all code :l</p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 651267,
      "author_name": "Yixinchen",
      "author_url": "",
      "post_date": "2019-10-17T09:05:15.307000",
      "content": "<p>This is not good. Please do not waste your time!</p>",
      "votes": 2,
      "replies": [
        {
          "id": 651325,
          "author_name": "Miroslav Valan",
          "author_url": "",
          "post_date": "2019-10-17T10:38:39.937000",
          "content": "<p>Please elaborate why? </p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 651369,
      "author_name": "DEM",
      "author_url": "",
      "post_date": "2019-10-17T12:12:06.333000",
      "content": "<p>Motivation is absolutely unclear, except you aimed to shake up LB or to get some quick upvotes...</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 649737,
      "author_name": "kambarakun",
      "author_url": "",
      "post_date": "2019-10-15T18:06:44.560000",
      "content": "<p>Thank you very much for sharing. <br>\nThe directory structure and pipeline are very helpful.</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 664987,
      "author_name": "Rashid Haffadi (Not Active)",
      "author_url": "",
      "post_date": "2019-11-04T13:50:34.350000",
      "content": "<p>Thank you for sharing this valuable informations.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 664870,
      "author_name": "norikatamari",
      "author_url": "",
      "post_date": "2019-11-04T10:21:39.400000",
      "content": "<p>thanks for sharing</p>",
      "votes": 1,
      "replies": [
        {
          "id": 665035,
          "author_name": "Jaideep",
          "author_url": "",
          "post_date": "2019-11-04T15:05:34.613000",
          "content": "<p><a href=\"/appian\">@appian</a> \n1) Adding Dihedral rotations ( 8 different kind of rotations ,45,-45,180 etc ) would be helpful considering the nature of image or it can be counterproductive . \n2) Altering the contrast to already dark images would be useful ?</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 658484,
      "author_name": "Kartik Nighania",
      "author_url": "",
      "post_date": "2019-10-26T03:58:16.193000",
      "content": "<p><a href=\"/appian\">@appian</a> Why are the seeds changing per epoch based on the epoch value. \nThis then adds another thing to take care of during validation. \ni guess i am missing something.</p>\n\n<p>ive also added:\n<code>\n    torch.cuda.manual_seed(seed)\n    torch.cuda.manual_seed_all(seed)\n</code></p>\n\n<p>ive also found benchmark to be true. Have you seen significant improvement in the past because \nsetting this to false can increase repoducibility.\n<code>torch.backends.cudnn.benchmark = True</code></p>\n\n<p>and again. Thanks for such a nice codebase :)</p>",
      "votes": 1,
      "replies": [
        {
          "id": 658996,
          "author_name": "Appian",
          "author_url": "",
          "post_date": "2019-10-26T22:31:58.573000",
          "content": "<p>Hi, Kartik. \nI just wanted to have per epoch reproducibility in case of resuming the training for some other purposes. It can be commented out without worries.\nYes, benchmark should be False for the reasons you mentioned. I didn't realize that this makes it slower. Thank you for mentioning.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 662441,
          "author_name": "yukiya",
          "author_url": "",
          "post_date": "2019-10-31T15:05:03.113000",
          "content": "<p>In my run, setting benchmark to False makes it slower judging from the eta (I set deterministic to False as well). I switch back benchmark to True</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 657485,
      "author_name": "tingfengnide",
      "author_url": "",
      "post_date": "2019-10-25T07:20:34.360000",
      "content": "<p>Thanks for sharing, can you tell me what's meaning of PositionOrd, LeftLabel and RightLabel. </p>\n\n<p>Much Thanks for your help~!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 655641,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-23T10:06:28.593000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 655662,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-23T10:41:51.487000",
          "content": "",
          "votes": 3,
          "replies": []
        },
        {
          "id": 655694,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-23T11:30:28.397000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 655732,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-23T12:50:20.063000",
          "content": "",
          "votes": 3,
          "replies": []
        },
        {
          "id": 658522,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-26T05:30:51.757000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 651311,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-17T10:05:56.607000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 651498,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-17T14:40:33.027000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 659459,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-27T17:47:23.863000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 651072,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-17T02:42:11.823000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 651495,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-17T14:37:57.493000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 651849,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-18T02:34:01.727000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 650715,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T16:09:29.907000",
      "content": "",
      "votes": 1,
      "replies": []
    },
    {
      "id": 650570,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T14:11:25.063000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 650613,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T14:44:45.077000",
          "content": "",
          "votes": 14,
          "replies": []
        },
        {
          "id": 650640,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T15:00:26.057000",
          "content": "",
          "votes": 5,
          "replies": []
        },
        {
          "id": 650653,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T15:16:20.247000",
          "content": "",
          "votes": 2,
          "replies": []
        },
        {
          "id": 650751,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T16:47:38.570000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 650761,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T16:54:26.950000",
          "content": "",
          "votes": 2,
          "replies": []
        },
        {
          "id": 650788,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T17:21:27.017000",
          "content": "",
          "votes": 3,
          "replies": []
        },
        {
          "id": 650803,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T17:38:42.823000",
          "content": "",
          "votes": 16,
          "replies": []
        }
      ]
    },
    {
      "id": 650734,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T16:29:18.043000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 651083,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-17T02:58:30.107000",
      "content": "",
      "votes": 2,
      "replies": []
    },
    {
      "id": 650330,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T09:27:06.080000",
      "content": "",
      "votes": 2,
      "replies": [
        {
          "id": 650335,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T09:29:42.110000",
          "content": "",
          "votes": 6,
          "replies": []
        },
        {
          "id": 650353,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T09:44:57.690000",
          "content": "",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 653239,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-20T05:29:41.117000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 654280,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-21T16:49:18.710000",
      "content": "",
      "votes": 1,
      "replies": []
    },
    {
      "id": 653202,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-20T03:41:20.907000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 653527,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-20T15:26:56.230000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 652400,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-18T20:05:45.670000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 652512,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-19T00:35:44",
          "content": "",
          "votes": 4,
          "replies": []
        }
      ]
    },
    {
      "id": 651509,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-17T14:47:14.310000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 651520,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-17T14:54:45.177000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 652761,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T11:31:49.227000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 650268,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T08:32:53.423000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 650392,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-16T10:15:41.087000",
          "content": "",
          "votes": -4,
          "replies": []
        }
      ]
    },
    {
      "id": 653120,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-20T01:04:48.623000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 652698,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T08:51:45.260000",
      "content": "",
      "votes": -9,
      "replies": []
    },
    {
      "id": 653368,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-20T10:28:29.243000",
      "content": "",
      "votes": -3,
      "replies": []
    },
    {
      "id": 668603,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-11-08T15:58:55.553000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 665287,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-11-04T21:00:24.027000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 661785,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-30T17:49:18.220000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 663884,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-11-02T19:58:34.013000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 661439,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-30T09:48:38.957000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 661473,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-30T10:59:57.370000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 660411,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-29T04:55:43.087000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 660405,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-29T04:40:35.927000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 660428,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-29T05:40:23.553000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 661240,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-30T03:38:22.017000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 661641,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-30T14:38:17.813000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 661687,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-30T15:39:19.097000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 661755,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-30T17:09:01.813000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 662515,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-31T16:36:37.767000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 660334,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-29T02:22:03.690000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 660622,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-29T11:37:22.493000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 659168,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-27T07:38:57.547000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 659174,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-27T07:51:03.463000",
          "content": "",
          "votes": 2,
          "replies": []
        },
        {
          "id": 659241,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-27T10:29:05.527000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 659512,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-27T20:13:15.130000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 659025,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-27T00:30:57.740000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 657899,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-25T13:58:27.463000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 658281,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-25T21:36:12.790000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 658439,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-26T02:18:30.463000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 660105,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-28T17:27:10.427000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 660119,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-28T17:56:21.540000",
          "content": "",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 657804,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-25T12:39:41.173000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 657649,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-25T10:22:52.270000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 656302,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-24T06:05:29.430000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 657034,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-24T21:25:37.713000",
          "content": "",
          "votes": 2,
          "replies": []
        },
        {
          "id": 657849,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-25T13:29:48.893000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 653839,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-21T03:22:45.377000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 654076,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-21T12:15:43.373000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 653836,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-21T03:20:20.400000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 656034,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-23T20:22:54.173000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 653076,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T22:19:19.763000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 653524,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-20T15:25:10.057000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 653634,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-20T18:29:15.970000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 653853,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-21T04:00:35.907000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 653858,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-21T04:15:08.140000",
          "content": "",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 652543,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T02:48:10.377000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 652639,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-19T06:43:23.807000",
          "content": "",
          "votes": 2,
          "replies": []
        },
        {
          "id": 652700,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-19T08:54:55.827000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 652860,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-19T13:57:07.920000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 651622,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-17T17:21:59.263000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 652212,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-18T14:18:41.407000",
          "content": "",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 656164,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-24T01:06:53.113000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 652189,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-18T13:41:58.337000",
      "content": "",
      "votes": -2,
      "replies": []
    },
    {
      "id": 651236,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-17T08:01:10.277000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 651249,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-17T08:22:49.957000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 651285,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-17T09:28:53.237000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 651323,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-10-17T10:37:32.473000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 650214,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T07:34:52.093000",
      "content": "",
      "votes": -5,
      "replies": []
    },
    {
      "id": 649638,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-15T15:42:49.447000",
      "content": "",
      "votes": -2,
      "replies": []
    },
    {
      "id": 650078,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T04:23:36.873000",
      "content": "",
      "votes": 21,
      "replies": []
    },
    {
      "id": 654036,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-21T10:50:48.420000",
      "content": "",
      "votes": 1,
      "replies": []
    },
    {
      "id": 653491,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-20T14:43:42.290000",
      "content": "",
      "votes": 1,
      "replies": []
    },
    {
      "id": 652859,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T13:55:48.690000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 650991,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T23:32:24.417000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 655545,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-23T06:49:56.560000",
      "content": "",
      "votes": 2,
      "replies": []
    },
    {
      "id": 655468,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-23T04:44:14.887000",
      "content": "",
      "votes": 2,
      "replies": []
    },
    {
      "id": 653865,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-21T04:42:39.863000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 653830,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-21T02:48:34.507000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 652745,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T10:56:01.077000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 652734,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T10:44:11.460000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 651000,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-17T00:23:17.393000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 650680,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T15:42:20.773000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 654904,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-22T13:16:02.280000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 654174,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-21T14:51:28.447000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 652487,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-18T23:10:10.223000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 652443,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-18T21:15:18.160000",
      "content": "",
      "votes": -2,
      "replies": []
    },
    {
      "id": 652861,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T13:57:36.603000",
      "content": "",
      "votes": -1,
      "replies": []
    },
    {
      "id": 650986,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-16T23:10:30.557000",
      "content": "",
      "votes": -2,
      "replies": []
    },
    {
      "id": 652657,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-19T07:35:57.057000",
      "content": "",
      "votes": -2,
      "replies": []
    },
    {
      "id": 651885,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-18T03:31:20.683000",
      "content": "",
      "votes": -7,
      "replies": []
    },
    {
      "id": 651374,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-17T12:21:28.913000",
      "content": "",
      "votes": -7,
      "replies": []
    },
    {
      "id": 660032,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-28T15:22:51.627000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 659375,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-27T14:37:54.513000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 657474,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-25T07:09:10.460000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 656010,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-10-23T19:40:11.757000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "649616": "With se\\_resnext50 you can achieve 0.066 on LB. Here is the tips. \n\n- 5 folds \n- 512x512\n- 3 epochs\n- hflip, crop, brightness, contrast, rotate ([here](https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage/blob/master/conf/model001.py) is the details of augmentations)\n- three types of windows, brain, blood and soft tissues.\n- tta (5 times)\n- lb 0.070 to 0.072 for each fold (with tta)\n- cv 0.071 to 0.074 for each fold (without tta)\n- lb 0.066 is achievable by averaging folds\n\nI've also shared the source code on github in case you are interested. \nhttps://github.com/appian42/kaggle-rsna-intracranial-hemorrhage\n\nThe github repo lets you train a basic single model as a baseline which probably scores 0.070 to 0.072 on public LB. This baseline model takes 20 hours to train with a single 1080ti.\nIf you have any questions please ask. Have fun.\n",
    "650648": "Thank you for all the feedbacks. Let me explain a few points.\n\n- We are allowed to share our ideas, codes, solutions during the competition as long as it's not the last week of the competition. We had three weeks and thought it was no problem.\n- I learn a lot from source code someone shares during a competition. Kernels, ideas are very helpful too but the most helpful one for me was the complete pipeline because I was able to learn how to structure the project while doing the competition. I learn here and I'd like to share too. \n\nThat being said, I now see all of your concerns and I will be more careful with this.\n",
    "650536": "I was stuck with  a score of 0.81 for weeks and secondly my only resource for GPU are kaggle kernels,so i can experiment with 4 different configurations  in a week being a student i could not avail the GCP credits as i dont have a credit card(so participating in this competition is already tricky for someone like me),I have lost every bit of motivation for participating in this contest with  this \"code Sharing\",You could have shared some code for windowing that would have been  educational ,but now that you have shared an entire repository most of the guys wont bother to understand the stuff ,Copy and paste and bang!!!! 100 people with 0.66 scores .Kaggle should be more strict in making sure  that this does not happen again,.Downvote if you have issues with such a long comment i just dont care.",
    "649832": "But why to distort leaderboard with open source solution??\nThat's just not alright.",
    "649736": "&gt;tips\n\n&gt;full code on github\n\nYou have a nice sense of humor :)",
    "650452": "if you want train all the data, you need check custom_dataset.py file.\nlike this:\n```\n        self.df = apply_dataset_policy(self.df, self.cfg.dataset_policy)\n        # self.df = self.df.sample(560)\n```\n",
    "650533": "don't waste your time with this pipeline",
    "650077": "This isn't alright. I dont' quite understand how people can give so many upvotes to this post. Last year, in the TGS competition, the Neptune team faced with lots of negative reaction even though they only released a \"silver\" zone code base.  \nThanks to your kindness, somebody with computing resources just needs to clone the code and easily gets good ranking 🙂 ",
    "662108": "@appian it's time to share  0.058 code 🤔 \n\t",
    "650417": "Could you please explain the motivation of doing this​?​ ",
    "652423": "Normally I wouldn't be so annoyed by things like this, but for competition with dataset of this magnitude, posting a solution that has a higher score than most people, even with bronze on public lb, is basically forcing people to spend hours and hours training this specific model. This leads to less diversified models, lower likelihood of brilliant unique solutions, and most importantly, less interesting competition.",
    "650577": "Thanks for sharing. I get 0.5 on LB by this pipeline, and wasted one chance of my submission :P Don't waste your time with this pipeline.",
    "649787": "Thanks for your \"baseline\"! I think a lot of people (incl. me) can learn from it.\nI'm a little bit shocked however, since it is a competition and the result is very strong.",
    "650031": "Do you prefer a discussion gold medal than a competition gold medal?",
    "650348": "Another fucking one - goddamn it. I guess I wont bother with this competition.",
    "653842": "Hi @appian , I am sorry for this dumb question ;)\n\n`image = np.array([\n            image1 - image1.mean(),\n            image2 - image2.mean(),\n            image3 - image3.mean(),\n        ]) \n`\nDo I understand correctly that you minus different means for each individual image?\n(I have been confused on this point on other competitions too — I thought we should apply *channel means* calculated from all data )",
    "650331": "in main.py\ntorch.backends.cudnn.deterministic = True\nThis will more slow than set False.",
    "650246": "Even though it is super rude to release a solution like this, everything in it has been discussed on the forums and in kernels. My one fold score without tta is pretty close with 224x224 images and a far smaller architecture, and there's still so many things to try. I predict the final gold medal loss is going to be a lot lower.",
    "649633": "thanks so much for your generous sharing.\nSince the competition is still ongoing, just curious would it be better to share the idea of how to improve the score, instead of directly uploading the whole source code?\npeople may copy and make submission without thinking😆 ",
    "651695": "I undestand people getting upset, but from a point of view of someone who is trying to learn, thanks for sharing some good code",
    "651340": "Don't worry guys. I believe there are two special places in DS hell: for people who publish such things and a separate one for those who up-vote feeding this madness.",
    "651386": "I reproduced the results. Thank's a lot!\nI also agree with the dissatisfied participants and feel a little guilty. But I do not know what can be done about it.",
    "649913": "Interesting decision to dump all code :l",
    "651267": "This is not good. Please do not waste your time!",
    "651369": "Motivation is absolutely unclear, except you aimed to shake up LB or to get some quick upvotes...",
    "649737": "Thank you very much for sharing.  \nThe directory structure and pipeline are very helpful.",
    "664987": "Thank you for sharing this valuable informations.",
    "664870": "thanks for sharing",
    "658484": "@appian Why are the seeds changing per epoch based on the epoch value. \nThis then adds another thing to take care of during validation. \ni guess i am missing something.\n\nive also added:\n```\n    torch.cuda.manual_seed(seed)\n    torch.cuda.manual_seed_all(seed)\n```\n\nive also found benchmark to be true. Have you seen significant improvement in the past because \nsetting this to false can increase repoducibility.\n`torch.backends.cudnn.benchmark = True`\n\nand again. Thanks for such a nice codebase :)",
    "657485": "Thanks for sharing, can you tell me what's meaning of PositionOrd, LeftLabel and RightLabel. \n\nMuch Thanks for your help~!",
    "655641": "Thanks for sharing,could you tell me why you use the following parameter for\nbone window?\nit is out of the range described in the link:https://radiopaedia.org/articles/windowing-ct\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F3618085%2F1690d9d94ca348e6f33f47754928daee%2F.jpeg?generation=1571825121372736&amp;alt=media)\n",
    "651311": "@appian Could you please shed some light on how you preprocess the images? Particularly, when you apply windowing, what do values, that you subtract from image array(0, -20, -150) mean? Are those just `image.min()` ?\n`\nimage1 = (image1 - 0) / 80`\n`image2 = (image2 - (-20)) / 200`\n`image3 = (image3 - (-150)) / 380\n`\nAlso in your code if policy==1,  than you subtract `image.min()` and divide by `(image3.max()-image3.min())` Why if policy==2 you divide by max only? Just trying to grasp the intuition behind this, thank you.",
    "651072": "@appian  Thank your sharing. But I have a question on your code,  It is about making adjacent labels. Your code is as following.\n`        for j,id in enumerate(group.ID):\n            if j == 0:\n                left = labels[j-1]\n            else:\n                left = ''\n            if j+1 == len(labels):\n                right = ''\n            else:\n                right = labels[j+1]\n`\nThe left label won't be \" if, only if j == 0. If I modify this code as follows, could it will be better?\n`        for j,id in enumerate(group.ID):\n            if j == 0:\n                left = ''\n            else:\n                left = labels[j-1]\n            if j+1 == len(labels):\n                right = ''\n            else:\n                right = labels[j+1]\n`",
    "650715": "Looks like not much people share my admire of that clean and well organized piece of code... But anyway respect for that!",
    "650570": "@appian excellent coding skills, I wish I get there one day...\n\nI appreciate your sharing too. It shows that dicom, and several windows should be used over brain and pngs/jpgs, which makes RAM on kernels to small for serious experiments.\n\nI wonder what else did others see in this pipeline which was not already known from public kernels/discussions?",
    "650734": "thanks a lot @appian . The code is so clean and elegant..\ncan u tell more about the ensembling part ? ...\n",
    "651083": "Single FOLD PB 0.074",
    "650330": "What does tta mean ?",
    "653239": "I was about to start and then I saw this. Well, it does downgrade the motivation but thanks for the whole code it would be very helpful for starters to build a pipeline from start till the end.",
    "654280": "Thanks for sharing. You help me to understand a lot",
    "653202": "Thanks for your sharing,you're really genius.\nCould you tell me the explanation of the following code in your misc.py please?\n\n`return {attr:cast(getattr(dicom,attr)) for attr in dir(dicom) if attr[0].isupper() and attr not in ['PixelData']}`\n\nMuch Thanks~",
    "652400": "Is anyone getting this error when running the training? Any help would be much appreciated! I'm just trying to learn in general.\n\nFile \"/opt/anaconda3/lib/python3.7/site-packages/albumentations/augmentations/functional.py\", line 1246, in _brightness_contrast_adjust_non_uint\n    max_value = MAX_VALUES_BY_DTYPE[dtype]\nKeyError: dtype('float64')",
    "651509": "What is cv? Lb? I am a fresh bird, sorry!",
    "652761": "Good job!!!",
    "650268": "There is a reason behind everything we do. I'm pretty sure you have your reasons as well for doing this(and we respect that).The kaggle community would appreciate(and like to understand) the reason/motive behind your act. Could you please share your reasons/motive just like you did for your code?",
    "653120": "Good job",
    "652698": "I understand to some extent the people who are a bit annoyed but I have joined the competition very late and this gives me a sound base to develop from. Some of the techniques he used I wouldn't get to find in the timeframe I had left, especially since this competition was not as generous with knowledge as some other (or I just couldn't find it). So, basically, thank you very much! It is a very instructive github.",
    "653368": "comment",
    "668603": "I try to train for additionally 2 epoch but the val_loss did not reduce and the best epoch is still the epoch 2. Have you faced the same ? Do yuo know the reason why ?",
    "665287": "I am seeing this exception @appian @oneraghavan @tikboa @paubellot \n&gt; value cannot be converted to type float without overflow",
    "661785": "I am getting a out of memory error. \n&gt; RuntimeError: cuda runtime error (2) : out of memory at /opt/conda/conda-bld/pytorch_1524586445097/work/aten/src/THC/generic/THCStorage.cu:58\n\nAnyone has seen this before ? ",
    "661439": "@appian  Thanks for sharing your tips and code!\nI was wondering if you have tried to use different backbone models for each fold. \nIn my previous experience with ensembles of models, it has been beneficial to use more heterogeneity (different backbones and even loses).\nDo you have any insights? ",
    "660411": "",
    "660405": "@appian  Not able to reproduce the results . Followed things in repo. The last epoch message I get is this : \n----- epoch 2 -----\n[train] 35/35 12(s) eta:0(s) loss:0.192383 loss200:0.192383 lr:2.67e-05 auc:0.9116 micro:0.9219 macro:0.9014\n0.164902 [0.261712 0.05017  0.17197  0.135664 0.109691 0.163395]\n[valid] 35/35 4(s) eta:0(s) loss:0.194399 loss200:0.194399 lr:0.00e+00 auc:0.8669 micro:0.8839 macro:0.8498\n0.166630 [0.279988 0.035475 0.206813 0.154385 0.073574 0.136186]\nsaved model to ./model/model001/fold0_ep2.pt\n[best] ep:2 loss:0.1944 score:0.1666\nSome directions on what I am missing here ?",
    "660334": "@appian Hello, Can you explain why did you remove these data when custom_diff &lt;=60?\n`df = df[df.custom_diff &gt; 60]   \nprint('removed records by custom_diff (%d records)' % len(df))`",
    "659168": "@appian The TTA strategy is a for loop 5 times of the same neural network model with the same test time compose function. The albumentation library depends on `python random seed` which we have fixed already. \n This is indeed is the same neural network model trained on the same modified test images and the changes that we are getting are due to the non-deterministic behavior of retraining. TTA should have taken different augmentation all the time of the test set and then averaged the prediction.\nAm I missing something? \nthanks again :) ",
    "659025": "I am getting \n\n&gt; making adjacent labels...\n  0%|                                                                                                                                                                             | 0/19530 [00:01\n    main()\n  File \"/home/ubuntu/kaggle-rsna-intracranial-hemorrhage/src/preprocess/create_dataset.py\", line 87, in main\n    df = add_adjacent_labels(df)\n  File \"/home/ubuntu/kaggle-rsna-intracranial-hemorrhage/src/preprocess/create_dataset.py\", line 50, in add_adjacent_labels\n    labels = list(group.labels)\n  File \"/home/ubuntu/anaconda3/envs/pytorch_p36/lib/python3.6/site-packages/pandas/core/generic.py\", line 3610, in __getattr__\n    return object.__getattribute__(self, name)\nAttributeError: 'DataFrame' object has no attribute 'labels'\n\n\n@appian is there anything i am missing ? When I try to run your script ",
    "657899": "Thanks for your sharing, could I ask a question? In bin/predict001.sh, where is the test pkl come from? 'test=./model/${model}/fold${fold}_ep${ep}_test_tta${tta}.pkl'.  \nShould it be /cache/test.pkl or /cache/test_raw.pkl?\nThanks",
    "657804": "",
    "657649": "@appian thanks for sharing the tips..\nby averaging of folds u mean averaging the tta folds ?",
    "656302": "Thanks for sharing\nI've got an issue , may be you must carrefully install , python, pytorch, pretrainedmodels version ?\n\n&gt;&gt;\n  run_nn(cfg.data.train, 'train', model, loader_train, criterion=criterion, optim=optim, apex=cfg.apex)\n  File \"/home/brunoconsult/RSNA-INTRACRANIAL/kaggle-rsna-intracranial-hemorrhage/src/cnn/main.py\", line 172, in run_nn\n    outputs = model(inputs)\n  File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 541, in __call__\n    result = self.forward(*input, **kwargs)\n.......\n\n  File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/conv.py\", line 345, in forward\n    return self.conv2d_forward(input, self.weight)\n  File \"/home/brunoconsult/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/conv.py\", line 342, in conv2d_forward\n    self.padding, self.dilation, self.groups)\nRuntimeError: Given groups=1, weight of size 64 3 7 7, expected input[28, 512, 512, 3] to have 3 channels, but got 512 channels instead\n\nBest Regards\n",
    "653839": "I can understand fold =1,2,3,4,5\nbut what's the meaning of fold=0 in your code?",
    "653836": "what's the difference between cfg.n_fold and cfg.fold in main.py?\nThanks~!",
    "653076": "Hi,\nrunning the script `train001.sh` appear to me that validation dataset is not created having 0 elements.\nFrom the log infact i get the following:\n```\nmode: train\nworkdir: ./model/model001\nfold: 5\nbatch size: 28\nacc: 1\nmodel: se_resnext50_32x4d\npretrained: imagenet\nloss: BCEWithLogitsLoss\noptim: Adam\ndataset_policy: all\nwindow_policy: 2\nread dataset (665414 records)\napplied dataset_policy all (665414 records)\nuse default(random) sampler\ndataset_policy: all\nwindow_policy: 2\nread dataset (0 records)\napplied dataset_policy all (0 records)\nuse default(random) sampler\ntrain data: loaded 665414 records\nvalid data: loaded 0 records\n```\n\nAlso in file `main.py` I see that the function `valid` is never called. Probably I miss something, but to my eyes appear that this code should not work. Please correct me where I am wrong.",
    "652543": "＠appian\nI modify the path in your bin folder and run it in kaggle notebook.\nbut it stuck in progress bar.here is the log:\n-----------------------------------------------------------\ntotal 16\n-rw-r--r-- 1 root root 2934 Oct 19 02:37 README.md\ndrwxr-xr-x 2 root root 4096 Oct 19 02:37 bin\ndrwxr-xr-x 2 root root 4096 Oct 19 02:37 conf\ndrwxr-xr-x 6 root root 4096 Oct 19 02:37 src\n['/kaggle/working/RSNA666/src/preprocess/dicom_to_dataframe.py', '--input', '/kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train.csv', '--output', '/kaggle/input/train_raw.pkl', '--imgdir', '/kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train_images']\nread /kaggle/input/rsna-intracranial-hemorrhage-detection/stage_1_train.csv (4045572 records)\n100%|█████████████████████████████| 4045572/4045572 [00:14&lt;00:00, 278177.31it/s]\nremoved ID_6431af929\nmaking records...\nargs.n_pool= 4\n------1--------\n  0%|  | 0/674257 [00:00\n\n\nplease help,Thanks",
    "651622": "@appian are you using calc\\_loss to simulate accurate cv scores? If so, why do you have eps 1e-5 as default - shouldn't it be 1e-15? which loss are you using to gauge your lb correlation? the pytorch loss or the calc\\_loss?",
    "656164": "",
    "652189": "",
    "651236": "",
    "650214": "",
    "649638": "",
    "650078": "Thanks for destroying the competition!",
    "654036": "thank you so much",
    "653491": "Thanks all\n",
    "652859": "thanks for sharing!",
    "650991": "THANKS",
    "655545": "wonderful thanks fro sharing.",
    "655468": "Thanks for sharing!",
    "653865": "Thanks for sharing. Really helped.",
    "653830": "Thanks, Really helped",
    "652745": "Thanks for sharing.",
    "652734": "Thanks",
    "651000": "Thanks a lot for your sharing",
    "650680": "Thank you for sharing!",
    "654904": "Thank you for sharing",
    "654174": "thanks",
    "652487": "Thanks.",
    "652443": "Thanks for sharing. ",
    "652861": "thanks for sharing!",
    "650986": "Thanks for sharing.",
    "652657": "thanks for sharing",
    "651885": "Thanks so much for sharing",
    "651374": "thanks for sharing ",
    "660032": "Thank you for sharing",
    "659375": "Wonderful! Thanks for your tip.",
    "657474": "Thanks for sharing",
    "656010": "Thanks for sharing!"
  }
}