{
  "id": 370587,
  "title": "9 techniques to improve the stability of training and why they matter for this competition",
  "url": "/competitions/rsna-breast-cancer-detection/discussion/370587",
  "author_name": "Radek Osmulski",
  "post_date": "2022-12-05T11:34:06.396000",
  "votes": 47,
  "comment_count": 6,
  "views": 0,
  "content": "<p>The following training logs come from training on the same split with exactly the same params:</p>\n<p>Exhibit A:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F83267%2Fcddfda9cbba4cea840ae042a1a2dc420%2FScreenshot%202022-12-05%20210820.png?generation=1670238556819606&amp;alt=media\" alt=\"\"></p>\n<p>Exhibit B:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F83267%2F66bfc5351425ddd1b1eae3f2cff2cb49%2FScreenshot%202022-12-05%20211144.png?generation=1670238721164093&amp;alt=media\" alt=\"\"></p>\n<p>This is so crazy. How can you trust any of your runs? How can you trust your results will generalize to unseen data? How can you tell what works and what doesn't?</p>\n<p>Here are a couple of ways that should allow our model to learn better:</p>\n<h3>1. Help your model see the data better</h3>\n<p>A couple of ideas here. First of all, normalization. Should we normalize each image to between 0 and 1? That is not great for neural networks in general (they learn better on zero-centered data). Equally importantly, this way we lose the relative pixel intensities between images.</p>\n<p>Maybe one scan being lighter than the other is important? </p>\n<p>A related idea here is putting different window in each of the 3 channels (though I haven't had much luck with this approach in the past).</p>\n<h3>2. Training with bigger batches</h3>\n<p>The bigger the batch, the higher the chance the loss will be stable.</p>\n<h3>3. Training with smaller LR</h3>\n<p>Similar argument to the above -- if any one step that we make is less likely to take us too far in the wrong direction, our training might be more stable.</p>\n<h3>4. Cleaning the data</h3>\n<p>Removing images that are malformed or mislabeled can go a very long way to stabilizing (and improving) results.</p>\n<h3>5. Pretraining on another dataset</h3>\n<p>That is especially true if the other dataset is large and of good quality. If we can start with our neural network being able to \"see\" what's in the image better, its training might be much more consistent.</p>\n<h3>6. Training with Label Smoothing</h3>\n<p>Label Smoothing helps calibrate the probabilities our model outputs which can be very useful in the context of this competition. But it also improves training outcomes on lower-quality data. Reason being that the loss increases disproportionately as our model becomes overconfident (outputs predictions closer to 0 or 1) and gets an example wrong.</p>\n<p>A couple of such training examples in succession can throw the weights off to the extent that our model will not be able to recover. Label Smoothing helps with that.</p>\n<h3>7. Training on bigger images</h3>\n<p>Bigger images might allow our model to pick up on signal better (there is some indication in the results and discussions on the forums) BUT they come at a cost of longer training and longer inference.</p>\n<h3>8. Multitask learning (AKA training with auxiliary loss)</h3>\n<p>This is what people in this competition have tried and I believe to good results 🙂 Why multitask learning might not improve the final results, it can help bootstrap the training by helping the model pick up on the signal in the data.</p>\n<h3>9. Addressing class imbalance</h3>\n<p>This is a big one! Only 2% of images in the train set come from patients with cancer! A model can go through batches without seeing a positive example!</p>\n<p>But how to address this in the context of this data? Upsampling, weighted loss? More aggressive augmentations for positive class? This is something that definitely requires more experimentation.</p>\n<h2>Summary</h2>\n<p>I hope you will find the above of use 🙂 I am still working on</p>\n<p><a href=\"https://www.kaggle.com/code/radek1/fast-ai-starter-pack-train-inference\" target=\"_blank\">🤖 [fast.ai starter pack] train + inference 🚀</a>. </p>\n<p>The training stability issue is hitting me really hard.</p>\n<p>But hoping to get through it soon so that I can put some of the techniques above to further testing 🙂</p>\n<p><strong>EDIT:</strong> Obviously the metric calculation from the 2nd training log had a bug 🤦‍♂️🤦‍♂️🤦‍♂️ That is generally not helpful to figuring out which way is up. But anyhow, even absent that bug, there is a lot of instability in the training, but I have now verified some of the methods from this thread work 🙂 More on this soon!</p>\n<h3>Other resources you might find useful:</h3>\n<ul>\n<li><a href=\"https://www.kaggle.com/code/radek1/how-to-process-dicom-images-to-pngs\" target=\"_blank\">💡 how to process DICOM images to PNGs</a></li>\n<li><a href=\"https://www.kaggle.com/code/radek1/eda-training-a-fast-ai-model-submission\" target=\"_blank\">📊 EDA + training a fast.ai model + submission 🚀</a></li>\n<li><a href=\"https://www.kaggle.com/code/radek1/fast-ai-starter-pack-train-inference\" target=\"_blank\">🤖 [fast.ai starter pack] train + inference 🚀</a></li>\n<li><a href=\"https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/371268\" target=\"_blank\">📸 Over 56GB of processed data, 5 different methods 🥳</a></li>\n<li><a href=\"https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/369706\" target=\"_blank\">3 resources to get started with Computer Vision in this competition 🚀🚀🚀</a></li>\n<li><a href=\"https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/369155\" target=\"_blank\">💡 6 Computer Vision tricks for faster training and better models 🚀🚀🚀</a></li>\n</ul>",
  "messages": [
    {
      "id": 2055736,
      "postDate": "2022-12-05T11:34:06.397Z",
      "content": "<p>The following training logs come from training on the same split with exactly the same params:</p>\n<p>Exhibit A:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F83267%2Fcddfda9cbba4cea840ae042a1a2dc420%2FScreenshot%202022-12-05%20210820.png?generation=1670238556819606&amp;alt=media\" alt=\"\"></p>\n<p>Exhibit B:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F83267%2F66bfc5351425ddd1b1eae3f2cff2cb49%2FScreenshot%202022-12-05%20211144.png?generation=1670238721164093&amp;alt=media\" alt=\"\"></p>\n<p>This is so crazy. How can you trust any of your runs? How can you trust your results will generalize to unseen data? How can you tell what works and what doesn't?</p>\n<p>Here are a couple of ways that should allow our model to learn better:</p>\n<h3>1. Help your model see the data better</h3>\n<p>A couple of ideas here. First of all, normalization. Should we normalize each image to between 0 and 1? That is not great for neural networks in general (they learn better on zero-centered data). Equally importantly, this way we lose the relative pixel intensities between images.</p>\n<p>Maybe one scan being lighter than the other is important? </p>\n<p>A related idea here is putting different window in each of the 3 channels (though I haven't had much luck with this approach in the past).</p>\n<h3>2. Training with bigger batches</h3>\n<p>The bigger the batch, the higher the chance the loss will be stable.</p>\n<h3>3. Training with smaller LR</h3>\n<p>Similar argument to the above -- if any one step that we make is less likely to take us too far in the wrong direction, our training might be more stable.</p>\n<h3>4. Cleaning the data</h3>\n<p>Removing images that are malformed or mislabeled can go a very long way to stabilizing (and improving) results.</p>\n<h3>5. Pretraining on another dataset</h3>\n<p>That is especially true if the other dataset is large and of good quality. If we can start with our neural network being able to \"see\" what's in the image better, its training might be much more consistent.</p>\n<h3>6. Training with Label Smoothing</h3>\n<p>Label Smoothing helps calibrate the probabilities our model outputs which can be very useful in the context of this competition. But it also improves training outcomes on lower-quality data. Reason being that the loss increases disproportionately as our model becomes overconfident (outputs predictions closer to 0 or 1) and gets an example wrong.</p>\n<p>A couple of such training examples in succession can throw the weights off to the extent that our model will not be able to recover. Label Smoothing helps with that.</p>\n<h3>7. Training on bigger images</h3>\n<p>Bigger images might allow our model to pick up on signal better (there is some indication in the results and discussions on the forums) BUT they come at a cost of longer training and longer inference.</p>\n<h3>8. Multitask learning (AKA training with auxiliary loss)</h3>\n<p>This is what people in this competition have tried and I believe to good results 🙂 Why multitask learning might not improve the final results, it can help bootstrap the training by helping the model pick up on the signal in the data.</p>\n<h3>9. Addressing class imbalance</h3>\n<p>This is a big one! Only 2% of images in the train set come from patients with cancer! A model can go through batches without seeing a positive example!</p>\n<p>But how to address this in the context of this data? Upsampling, weighted loss? More aggressive augmentations for positive class? This is something that definitely requires more experimentation.</p>\n<h2>Summary</h2>\n<p>I hope you will find the above of use 🙂 I am still working on</p>\n<p><a href=\"https://www.kaggle.com/code/radek1/fast-ai-starter-pack-train-inference\" target=\"_blank\">🤖 [fast.ai starter pack] train + inference 🚀</a>. </p>\n<p>The training stability issue is hitting me really hard.</p>\n<p>But hoping to get through it soon so that I can put some of the techniques above to further testing 🙂</p>\n<p><strong>EDIT:</strong> Obviously the metric calculation from the 2nd training log had a bug 🤦‍♂️🤦‍♂️🤦‍♂️ That is generally not helpful to figuring out which way is up. But anyhow, even absent that bug, there is a lot of instability in the training, but I have now verified some of the methods from this thread work 🙂 More on this soon!</p>\n<h3>Other resources you might find useful:</h3>\n<ul>\n<li><a href=\"https://www.kaggle.com/code/radek1/how-to-process-dicom-images-to-pngs\" target=\"_blank\">💡 how to process DICOM images to PNGs</a></li>\n<li><a href=\"https://www.kaggle.com/code/radek1/eda-training-a-fast-ai-model-submission\" target=\"_blank\">📊 EDA + training a fast.ai model + submission 🚀</a></li>\n<li><a href=\"https://www.kaggle.com/code/radek1/fast-ai-starter-pack-train-inference\" target=\"_blank\">🤖 [fast.ai starter pack] train + inference 🚀</a></li>\n<li><a href=\"https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/371268\" target=\"_blank\">📸 Over 56GB of processed data, 5 different methods 🥳</a></li>\n<li><a href=\"https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/369706\" target=\"_blank\">3 resources to get started with Computer Vision in this competition 🚀🚀🚀</a></li>\n<li><a href=\"https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/369155\" target=\"_blank\">💡 6 Computer Vision tricks for faster training and better models 🚀🚀🚀</a></li>\n</ul>",
      "rawMarkdown": "The following training logs come from training on the same split with exactly the same params:\n\nExhibit A:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F83267%2Fcddfda9cbba4cea840ae042a1a2dc420%2FScreenshot%202022-12-05%20210820.png?generation=1670238556819606&alt=media)\n\nExhibit B:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F83267%2F66bfc5351425ddd1b1eae3f2cff2cb49%2FScreenshot%202022-12-05%20211144.png?generation=1670238721164093&alt=media)\n\nThis is so crazy. How can you trust any of your runs? How can you trust your results will generalize to unseen data? How can you tell what works and what doesn't?\n\nHere are a couple of ways that should allow our model to learn better:\n\n### 1. Help your model see the data better\n\nA couple of ideas here. First of all, normalization. Should we normalize each image to between 0 and 1? That is not great for neural networks in general (they learn better on zero-centered data). Equally importantly, this way we lose the relative pixel intensities between images.\n\nMaybe one scan being lighter than the other is important? \n\nA related idea here is putting different window in each of the 3 channels (though I haven't had much luck with this approach in the past).\n\n### 2. Training with bigger batches\n\nThe bigger the batch, the higher the chance the loss will be stable.\n\n### 3. Training with smaller LR\n\nSimilar argument to the above -- if any one step that we make is less likely to take us too far in the wrong direction, our training might be more stable.\n\n### 4. Cleaning the data\n\nRemoving images that are malformed or mislabeled can go a very long way to stabilizing (and improving) results.\n\n### 5. Pretraining on another dataset\n\nThat is especially true if the other dataset is large and of good quality. If we can start with our neural network being able to \"see\" what's in the image better, its training might be much more consistent.\n\n### 6. Training with Label Smoothing\n\nLabel Smoothing helps calibrate the probabilities our model outputs which can be very useful in the context of this competition. But it also improves training outcomes on lower-quality data. Reason being that the loss increases disproportionately as our model becomes overconfident (outputs predictions closer to 0 or 1) and gets an example wrong.\n\nA couple of such training examples in succession can throw the weights off to the extent that our model will not be able to recover. Label Smoothing helps with that.\n\n### 7. Training on bigger images\n\nBigger images might allow our model to pick up on signal better (there is some indication in the results and discussions on the forums) BUT they come at a cost of longer training and longer inference.\n\n### 8. Multitask learning (AKA training with auxiliary loss)\n\nThis is what people in this competition have tried and I believe to good results 🙂 Why multitask learning might not improve the final results, it can help bootstrap the training by helping the model pick up on the signal in the data.\n\n### 9. Addressing class imbalance\n\nThis is a big one! Only 2% of images in the train set come from patients with cancer! A model can go through batches without seeing a positive example!\n\nBut how to address this in the context of this data? Upsampling, weighted loss? More aggressive augmentations for positive class? This is something that definitely requires more experimentation.\n\n## Summary\n\nI hope you will find the above of use 🙂 I am still working on\n\n[🤖 [fast.ai starter pack] train + inference 🚀](https://www.kaggle.com/code/radek1/fast-ai-starter-pack-train-inference). \n\nThe training stability issue is hitting me really hard.\n\nBut hoping to get through it soon so that I can put some of the techniques above to further testing 🙂\n\n**EDIT:** Obviously the metric calculation from the 2nd training log had a bug 🤦‍♂️🤦‍♂️🤦‍♂️ That is generally not helpful to figuring out which way is up. But anyhow, even absent that bug, there is a lot of instability in the training, but I have now verified some of the methods from this thread work 🙂 More on this soon!\n\n### Other resources you might find useful:\n\n* [💡 how to process DICOM images to PNGs](https://www.kaggle.com/code/radek1/how-to-process-dicom-images-to-pngs)\n* [📊 EDA + training a fast.ai model + submission 🚀](https://www.kaggle.com/code/radek1/eda-training-a-fast-ai-model-submission)\n* [🤖 [fast.ai starter pack] train + inference 🚀](https://www.kaggle.com/code/radek1/fast-ai-starter-pack-train-inference)\n* [📸 Over 56GB of processed data, 5 different methods 🥳](https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/371268)\n* [3 resources to get started with Computer Vision in this competition 🚀🚀🚀](https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/369706)\n* [💡 6 Computer Vision tricks for faster training and better models 🚀🚀🚀](https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/369155)\n",
      "votes": 47
    },
    {
      "id": 2058210,
      "postDate": "2022-12-07T17:29:46.400Z",
      "content": "<p>Great work, Excellent notebook. Upvoted .</p>",
      "rawMarkdown": "Great work, Excellent notebook. Upvoted .\n\n",
      "votes": 1,
      "replies": [
        {
          "id": 2059511,
          "postDate": "2022-12-09T00:13:28.653Z",
          "content": "<p>Thank you, <a href=\"https://www.kaggle.com/asif05amu\" target=\"_blank\">@asif05amu</a>! Appreciate it! Glad you are finding this useful 🙂 </p>",
          "rawMarkdown": "Thank you, @asif05amu! Appreciate it! Glad you are finding this useful 🙂 "
        }
      ]
    },
    {
      "id": 2057248,
      "postDate": "2022-12-06T22:21:09.383Z",
      "content": "<blockquote>\n  <p>Why multitask learning might not improve the final results, it can help bootstrap the training by helping the model pick up on the signal in the data.</p>\n</blockquote>\n<p>This hits me for a sec.</p>",
      "rawMarkdown": "> Why multitask learning might not improve the final results, it can help bootstrap the training by helping the model pick up on the signal in the data.\n\nThis hits me for a sec.",
      "votes": 1
    },
    {
      "id": 2057252,
      "postDate": "2022-12-06T22:23:25.070Z",
      "content": "<p>I find this class imbalance notebook quite interesting: <a href=\"https://www.kaggle.com/code/shahules/tackling-class-imbalance\" target=\"_blank\">tackling-class-imbalance</a></p>",
      "rawMarkdown": "I find this class imbalance notebook quite interesting: [tackling-class-imbalance](https://www.kaggle.com/code/shahules/tackling-class-imbalance)",
      "votes": 2,
      "replies": [
        {
          "id": 2057300,
          "postDate": "2022-12-07T00:41:28.040Z",
          "content": "<p>That is a very interesting notebook, thanks for suggesting it! 🙂</p>",
          "rawMarkdown": "That is a very interesting notebook, thanks for suggesting it! 🙂"
        },
        {
          "id": 2059504,
          "postDate": "2022-12-08T23:51:35.593Z",
          "content": "<p>i would like in this competition to give my attention to data more :<br>\nthe first step is : to convert data into PNG format and this task was handle by you . thank you for sharing<br>\nnext use <a href=\"https://github.com/dd1github/DeepSMOTE\" target=\"_blank\"> DeepSmote generative model to balance the data</a> </p>",
          "rawMarkdown": "i would like in this competition to give my attention to data more :\nthe first step is : to convert data into PNG format and this task was handle by you . thank you for sharing\nnext use [ DeepSmote generative model to balance the data](https://github.com/dd1github/DeepSMOTE) "
        }
      ]
    }
  ],
  "comments": [
    {
      "id": 2058210,
      "author_name": "Dr. Asif Khan",
      "author_url": "",
      "post_date": "2022-12-07T17:29:46.400000",
      "content": "<p>Great work, Excellent notebook. Upvoted .</p>",
      "votes": 1,
      "replies": [
        {
          "id": 2059511,
          "author_name": "Radek Osmulski",
          "author_url": "",
          "post_date": "2022-12-09T00:13:28.653000",
          "content": "<p>Thank you, <a href=\"https://www.kaggle.com/asif05amu\" target=\"_blank\">@asif05amu</a>! Appreciate it! Glad you are finding this useful 🙂 </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2057248,
      "author_name": "Saurav Solanki",
      "author_url": "",
      "post_date": "2022-12-06T22:21:09.383000",
      "content": "<blockquote>\n  <p>Why multitask learning might not improve the final results, it can help bootstrap the training by helping the model pick up on the signal in the data.</p>\n</blockquote>\n<p>This hits me for a sec.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2057252,
      "author_name": "Saurav Solanki",
      "author_url": "",
      "post_date": "2022-12-06T22:23:25.070000",
      "content": "<p>I find this class imbalance notebook quite interesting: <a href=\"https://www.kaggle.com/code/shahules/tackling-class-imbalance\" target=\"_blank\">tackling-class-imbalance</a></p>",
      "votes": 2,
      "replies": [
        {
          "id": 2057300,
          "author_name": "Radek Osmulski",
          "author_url": "",
          "post_date": "2022-12-07T00:41:28.040000",
          "content": "<p>That is a very interesting notebook, thanks for suggesting it! 🙂</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 2059504,
          "author_name": "Youness EL BRAG",
          "author_url": "",
          "post_date": "2022-12-08T23:51:35.593000",
          "content": "<p>i would like in this competition to give my attention to data more :<br>\nthe first step is : to convert data into PNG format and this task was handle by you . thank you for sharing<br>\nnext use <a href=\"https://github.com/dd1github/DeepSMOTE\" target=\"_blank\"> DeepSmote generative model to balance the data</a> </p>",
          "votes": 0,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "2055736": "The following training logs come from training on the same split with exactly the same params:\n\nExhibit A:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F83267%2Fcddfda9cbba4cea840ae042a1a2dc420%2FScreenshot%202022-12-05%20210820.png?generation=1670238556819606&alt=media)\n\nExhibit B:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F83267%2F66bfc5351425ddd1b1eae3f2cff2cb49%2FScreenshot%202022-12-05%20211144.png?generation=1670238721164093&alt=media)\n\nThis is so crazy. How can you trust any of your runs? How can you trust your results will generalize to unseen data? How can you tell what works and what doesn't?\n\nHere are a couple of ways that should allow our model to learn better:\n\n### 1. Help your model see the data better\n\nA couple of ideas here. First of all, normalization. Should we normalize each image to between 0 and 1? That is not great for neural networks in general (they learn better on zero-centered data). Equally importantly, this way we lose the relative pixel intensities between images.\n\nMaybe one scan being lighter than the other is important? \n\nA related idea here is putting different window in each of the 3 channels (though I haven't had much luck with this approach in the past).\n\n### 2. Training with bigger batches\n\nThe bigger the batch, the higher the chance the loss will be stable.\n\n### 3. Training with smaller LR\n\nSimilar argument to the above -- if any one step that we make is less likely to take us too far in the wrong direction, our training might be more stable.\n\n### 4. Cleaning the data\n\nRemoving images that are malformed or mislabeled can go a very long way to stabilizing (and improving) results.\n\n### 5. Pretraining on another dataset\n\nThat is especially true if the other dataset is large and of good quality. If we can start with our neural network being able to \"see\" what's in the image better, its training might be much more consistent.\n\n### 6. Training with Label Smoothing\n\nLabel Smoothing helps calibrate the probabilities our model outputs which can be very useful in the context of this competition. But it also improves training outcomes on lower-quality data. Reason being that the loss increases disproportionately as our model becomes overconfident (outputs predictions closer to 0 or 1) and gets an example wrong.\n\nA couple of such training examples in succession can throw the weights off to the extent that our model will not be able to recover. Label Smoothing helps with that.\n\n### 7. Training on bigger images\n\nBigger images might allow our model to pick up on signal better (there is some indication in the results and discussions on the forums) BUT they come at a cost of longer training and longer inference.\n\n### 8. Multitask learning (AKA training with auxiliary loss)\n\nThis is what people in this competition have tried and I believe to good results 🙂 Why multitask learning might not improve the final results, it can help bootstrap the training by helping the model pick up on the signal in the data.\n\n### 9. Addressing class imbalance\n\nThis is a big one! Only 2% of images in the train set come from patients with cancer! A model can go through batches without seeing a positive example!\n\nBut how to address this in the context of this data? Upsampling, weighted loss? More aggressive augmentations for positive class? This is something that definitely requires more experimentation.\n\n## Summary\n\nI hope you will find the above of use 🙂 I am still working on\n\n[🤖 [fast.ai starter pack] train + inference 🚀](https://www.kaggle.com/code/radek1/fast-ai-starter-pack-train-inference). \n\nThe training stability issue is hitting me really hard.\n\nBut hoping to get through it soon so that I can put some of the techniques above to further testing 🙂\n\n**EDIT:** Obviously the metric calculation from the 2nd training log had a bug 🤦‍♂️🤦‍♂️🤦‍♂️ That is generally not helpful to figuring out which way is up. But anyhow, even absent that bug, there is a lot of instability in the training, but I have now verified some of the methods from this thread work 🙂 More on this soon!\n\n### Other resources you might find useful:\n\n* [💡 how to process DICOM images to PNGs](https://www.kaggle.com/code/radek1/how-to-process-dicom-images-to-pngs)\n* [📊 EDA + training a fast.ai model + submission 🚀](https://www.kaggle.com/code/radek1/eda-training-a-fast-ai-model-submission)\n* [🤖 [fast.ai starter pack] train + inference 🚀](https://www.kaggle.com/code/radek1/fast-ai-starter-pack-train-inference)\n* [📸 Over 56GB of processed data, 5 different methods 🥳](https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/371268)\n* [3 resources to get started with Computer Vision in this competition 🚀🚀🚀](https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/369706)\n* [💡 6 Computer Vision tricks for faster training and better models 🚀🚀🚀](https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/369155)\n",
    "2058210": "Great work, Excellent notebook. Upvoted .\n\n",
    "2057248": "> Why multitask learning might not improve the final results, it can help bootstrap the training by helping the model pick up on the signal in the data.\n\nThis hits me for a sec.",
    "2057252": "I find this class imbalance notebook quite interesting: [tackling-class-imbalance](https://www.kaggle.com/code/shahules/tackling-class-imbalance)"
  }
}