{
  "id": 99545,
  "title": "Memorizer CGAN for dummies",
  "url": "/competitions/generative-dog-images/discussion/99545",
  "author_name": "",
  "post_date": "2019-07-12T05:38:42.596252700Z",
  "votes": -1,
  "comment_count": 15,
  "views": 0,
  "content": "<h3><a href=\"https://www.kaggle.com/jesucristo/memorizer-cgan-for-dummies\">Memorizer CGAN for dummies</a></h3>\n\n<p>&gt; As you can check here: <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/98183#latest-573181\">Rules clarification on Generative Models</a> this method <strong>is allowed.</strong> So I decided to make public my <strong>simple fork</strong>, but sharing my insights :)</p>\n\n<p><strong>You're going to see:</strong></p>\n\n<ol>\n<li>GANs and CGANs</li>\n<li><p>How to destroy the FID metric.</p>\n\n<ul><li>Best FID</li>\n<li>MiFID Penalization</li></ul></li>\n<li><p>How Supervised GANs work and how to improve it.</p>\n\n<ul><li>Discriminator memory test.</li>\n<li>Tricks to avoid MiFID Penalization.</li></ul></li>\n</ol>\n\n<p><em>From a noob point of view ;)</em></p>\n\n<p>&gt; This kernel is obviously based on: <a href=\"https://www.kaggle.com/cdeotte/dog-memorizer-gan\">Dog Memorizer GAN</a> , is pure knowledge so please upvote it, and the post <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/99215\">Memorization GAN Explained</a></p>\n\n<p>If I see that many people is interested in these kind of kernels, sharing my insights, I can make  a kernel about my <strong>Private LB simulation (Private Dataset and Private NN).</strong></p>\n\n<blockquote>\n  <p>hope this helps you to understand chris kernels, how it works, and how to avoid MiFID penalization. If you understood that, you probably know what to do to destroy the LB ;)</p>\n</blockquote>",
  "messages": [
    {
      "id": "573315",
      "postDate": "07/12/2019 05:38:42",
      "content": "<h3><a href=\"https://www.kaggle.com/jesucristo/memorizer-cgan-for-dummies\">Memorizer CGAN for dummies</a></h3>\n\n<p>&gt; As you can check here: <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/98183#latest-573181\">Rules clarification on Generative Models</a> this method <strong>is allowed.</strong> So I decided to make public my <strong>simple fork</strong>, but sharing my insights :)</p>\n\n<p><strong>You're going to see:</strong></p>\n\n<ol>\n<li>GANs and CGANs</li>\n<li><p>How to destroy the FID metric.</p>\n\n<ul><li>Best FID</li>\n<li>MiFID Penalization</li></ul></li>\n<li><p>How Supervised GANs work and how to improve it.</p>\n\n<ul><li>Discriminator memory test.</li>\n<li>Tricks to avoid MiFID Penalization.</li></ul></li>\n</ol>\n\n<p><em>From a noob point of view ;)</em></p>\n\n<p>&gt; This kernel is obviously based on: <a href=\"https://www.kaggle.com/cdeotte/dog-memorizer-gan\">Dog Memorizer GAN</a> , is pure knowledge so please upvote it, and the post <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/99215\">Memorization GAN Explained</a></p>\n\n<p>If I see that many people is interested in these kind of kernels, sharing my insights, I can make  a kernel about my <strong>Private LB simulation (Private Dataset and Private NN).</strong></p>\n\n<blockquote>\n  <p>hope this helps you to understand chris kernels, how it works, and how to avoid MiFID penalization. If you understood that, you probably know what to do to destroy the LB ;)</p>\n</blockquote>",
      "rawMarkdown": "### [Memorizer CGAN for dummies](https://www.kaggle.com/jesucristo/memorizer-cgan-for-dummies)\n\n&gt; As you can check here: [Rules clarification on Generative Models](https://www.kaggle.com/c/generative-dog-images/discussion/98183#latest-573181) this method **is allowed.** So I decided to make public my **simple fork**, but sharing my insights :)\n\n**You're going to see:**\n\n1. GANs and CGANs\n2. How to destroy the FID metric.\n    - Best FID\n    - MiFID Penalization\n    \n    \n3. How Supervised GANs work and how to improve it.\n    - Discriminator memory test.\n    - Tricks to avoid MiFID Penalization.\n\n*From a noob point of view ;)*\n\n&gt; This kernel is obviously based on: [Dog Memorizer GAN](https://www.kaggle.com/cdeotte/dog-memorizer-gan) , is pure knowledge so please upvote it, and the post [Memorization GAN Explained](https://www.kaggle.com/c/generative-dog-images/discussion/99215)\n\nIf I see that many people is interested in these kind of kernels, sharing my insights, I can make  a kernel about my **Private LB simulation (Private Dataset and Private NN).**\n\n&gt; hope this helps you to understand chris kernels, how it works, and how to avoid MiFID penalization. If you understood that, you probably know what to do to destroy the LB ;)",
      "votes": null
    },
    {
      "id": "573395",
      "postDate": "07/12/2019 07:59:23",
      "content": "<p>Thank you for your work but the rules don't say anything about memorizing GAN. I would be surprised if they end up being allowed and it would be sad. \nHowever, it would be nice to have clarification about that as soon as possible. I don't want to work too long on generative GAN and at the end not be in the race. </p>",
      "rawMarkdown": "Thank you for your work but the rules don't say anything about memorizing GAN. I would be surprised if they end up being allowed and it would be sad. \nHowever, it would be nice to have clarification about that as soon as possible. I don't want to work too long on generative GAN and at the end not be in the race.",
      "votes": null
    },
    {
      "id": "573403",
      "postDate": "07/12/2019 08:23:57",
      "content": "<p>I'm 99% sure that are allowed, read this:</p>\n\n<blockquote>\n  <p>This is a gray area and I had to think about it for a while. <strong>For now, I think they are allowed</strong> - but please note that for the private leaderboard we have a different evaluation dataset and model, so by memorizing the training examples you actually might overfit to the training sample distribution. Also the memorization cosine distance still applies in the private leaderboard.</p>\n</blockquote>",
      "rawMarkdown": "I'm 99% sure that are allowed, read this:\n\n&gt; This is a gray area and I had to think about it for a while. **For now, I think they are allowed** - but please note that for the private leaderboard we have a different evaluation dataset and model, so by memorizing the training examples you actually might overfit to the training sample distribution. Also the memorization cosine distance still applies in the private leaderboard.",
      "votes": null
    },
    {
      "id": "573404",
      "postDate": "07/12/2019 08:24:25",
      "content": "<p>mi serial downvoter is back :)</p>",
      "rawMarkdown": "mi serial downvoter is back :)",
      "votes": null
    },
    {
      "id": "573410",
      "postDate": "07/12/2019 08:37:32",
      "content": "<p>Sorry I had missed that. That's quite a shame. I understand that it's too hard to detect memorizing GAN but there is no point anymore to work on this competition ...</p>",
      "rawMarkdown": "Sorry I had missed that. That's quite a shame. I understand that it's too hard to detect memorizing GAN but there is no point anymore to work on this competition ...",
      "votes": null
    },
    {
      "id": "573414",
      "postDate": "07/12/2019 08:41:38",
      "content": "<p>Serial downvoting is a skewed way of showing flattery :D </p>",
      "rawMarkdown": "Serial downvoting is a skewed way of showing flattery :D",
      "votes": null
    },
    {
      "id": "573416",
      "postDate": "07/12/2019 08:45:40",
      "content": "<p>sure! to be honest, I like this top and that's why I keep working on \"common GANs\" and supervised GAN's, but I think as a comp this is a disaster hahaha 😄 feels like competing in a race where some people run, others walk, others ride bikes or even motorcycles. hahaha</p>",
      "rawMarkdown": "sure! to be honest, I like this top and that's why I keep working on \"common GANs\" and supervised GAN's, but I think as a comp this is a disaster hahaha 😄 feels like competing in a race where some people run, others walk, others ride bikes or even motorcycles. hahaha",
      "votes": null
    },
    {
      "id": "573419",
      "postDate": "07/12/2019 08:53:12",
      "content": "<p>Please don't encourage this way to tackle the competition ...</p>",
      "rawMarkdown": "Please don't encourage this way to tackle the competition ...",
      "votes": null
    },
    {
      "id": "573421",
      "postDate": "07/12/2019 08:58:40",
      "content": "<p>sorry <a href=\"/theoviel\">@theoviel</a> encourage what? do you mean memorizer GANs? I did this post and I made public my kernel because they are allowed and looks like they're going to be allowed. I don't like them, but if they are allowed I want to understand them, know how the MiFID penalization works etc \nHowever I still working on \"normal GANs\", like I said:</p>\n\n<blockquote>\n  <p>feels like competing in a race where some people run, others walk, others ride bikes or even motorcycles.</p>\n</blockquote>",
      "rawMarkdown": "sorry @theoviel encourage what? do you mean memorizer GANs? I did this post and I made public my kernel because they are allowed and looks like they're going to be allowed. I don't like them, but if they are allowed I want to understand them, know how the MiFID penalization works etc \nHowever I still working on \"normal GANs\", like I said:\n&gt;  feels like competing in a race where some people run, others walk, others ride bikes or even motorcycles.",
      "votes": null
    },
    {
      "id": "573440",
      "postDate": "07/12/2019 09:30:07",
      "content": "<p>I'm fine with your work and appreciate what you are doing overall. </p>\n\n<p>I may give your kernel a look to understand the metric a bit. However most people will continue on this way to over-abuse the metric to try and get a shiny medal. \nAlthough it is appealing to learn how to score high in this particular competition by producing GANs that are not generative. But those models are pointless.</p>\n\n<p>And note that those GANs are discouraged by the organizers, see <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/98183\">https://www.kaggle.com/c/generative-dog-images/discussion/98183</a></p>",
      "rawMarkdown": "I'm fine with your work and appreciate what you are doing overall. \n\nI may give your kernel a look to understand the metric a bit. However most people will continue on this way to over-abuse the metric to try and get a shiny medal. \nAlthough it is appealing to learn how to score high in this particular competition by producing GANs that are not generative. But those models are pointless.\n\nAnd note that those GANs are discouraged by the organizers, see https://www.kaggle.com/c/generative-dog-images/discussion/98183",
      "votes": null
    },
    {
      "id": "573487",
      "postDate": "07/12/2019 10:37:35",
      "content": "<p>I believe version 4 of my Memorization GAN and your kernel (versions 1 and 8) are <strong>disallowed</strong>. Memorization GANs are allowed but the competition still <strong>disallows</strong> submitting images that are too similar to original training images. (And you kernel version 10 does a good job of showing what my version 4's outputted images look like). Below is Wendy's most recent quote from <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/98183#573181\">here</a> with bold emphasis added:</p>\n\n<p>&gt; That said, I agree with all the sentiment here that <strong>we don't want to allow</strong> memorization GANs. However, there are a few reasons that makes it hard to just ban them:\n1. There are different levels of memorization in a GAN. There's no way to quantify how much memorization there is inside a GAN model.\n2. It's extremely hard to check the code for every submission to see if there's memorization. <strong>We will try different ways to test for memorization, and we will remove people if we think there's intentional memorization (for example directly submit some blend of training images)</strong>. But we can't guarantee that we'll find everything.</p>\n\n<p>And here are the original rules</p>\n\n<p>&gt;[Participants] <strong>are not permitted</strong> to make submissions that include any images already classified as dogs or altered versions of such images. </p>\n\n<p>&gt;To enforce and prevent cheating, we reserve the right to: (a) <strong>Visually inspect</strong> all participants' submitted images, (b) review any submitted source code, (c) use these reviews to identify violators or determine winners, and (d) <strong>disqualify participants</strong> from the competition who are found in violation. </p>\n\n<p>So although Wendy said <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/98183#572299\">here</a></p>\n\n<p>&gt; This is a gray area and I had to think about it for a while. For now, I think [Memorization GANs] are allowed</p>\n\n<p>I don't think she is changing the original rules which disallow submitting images that are too similar to training images. I believe that Wendy is saying \"Memorization GANs are allowed <strong>but you still cannot</strong> submit images that are too close to original training images. We will <strong>be inspecting</strong> the winners manually.\"</p>\n\n<p>Therefore someone would need to submit version 6 of Memorization GAN which only scores LB 90. If they submit version 4 which scores LB 7.5 and finish in the Gold (or submit your kernel), I believe Kaggle will manually inspect the images and determine that it is outputting images that are too similar to original training images and <strong>disqualify</strong> that person.</p>",
      "rawMarkdown": "I believe version 4 of my Memorization GAN and your kernel (versions 1 and 8) are **disallowed**. Memorization GANs are allowed but the competition still **disallows** submitting images that are too similar to original training images. (And you kernel version 10 does a good job of showing what my version 4's outputted images look like). Below is Wendy's most recent quote from [here][1] with bold emphasis added:\n\n&gt; That said, I agree with all the sentiment here that **we don't want to allow** memorization GANs. However, there are a few reasons that makes it hard to just ban them:\n1. There are different levels of memorization in a GAN. There's no way to quantify how much memorization there is inside a GAN model.\n2. It's extremely hard to check the code for every submission to see if there's memorization. **We will try different ways to test for memorization, and we will remove people if we think there's intentional memorization (for example directly submit some blend of training images)**. But we can't guarantee that we'll find everything.\n\nAnd here are the original rules\n\n&gt;[Participants] **are not permitted** to make submissions that include any images already classified as dogs or altered versions of such images. \n\n&gt;To enforce and prevent cheating, we reserve the right to: (a) **Visually inspect** all participants' submitted images, (b) review any submitted source code, (c) use these reviews to identify violators or determine winners, and (d) **disqualify participants** from the competition who are found in violation. \n\nSo although Wendy said [here][2]\n\n&gt; This is a gray area and I had to think about it for a while. For now, I think [Memorization GANs] are allowed\n\nI don't think she is changing the original rules which disallow submitting images that are too similar to training images. I believe that Wendy is saying \"Memorization GANs are allowed **but you still cannot** submit images that are too close to original training images. We will **be inspecting** the winners manually.\"\n\nTherefore someone would need to submit version 6 of Memorization GAN which only scores LB 90. If they submit version 4 which scores LB 7.5 and finish in the Gold (or submit your kernel), I believe Kaggle will manually inspect the images and determine that it is outputting images that are too similar to original training images and **disqualify** that person.\n\n[1]: https://www.kaggle.com/c/generative-dog-images/discussion/98183#573181\n[2]: https://www.kaggle.com/c/generative-dog-images/discussion/98183#572299",
      "votes": null
    },
    {
      "id": "573503",
      "postDate": "07/12/2019 10:55:04",
      "content": "<p>Are you sure about this? The improved score comes from these lines:\n<code>\n        xx[self.index] = 1\n        #xx[np.random.randint(10000)] = 0.001\n</code>\nHe just outputs 100% training images, which is not allowed. This is different from your kernel V4.</p>",
      "rawMarkdown": "Are you sure about this? The improved score comes from these lines:\n```\n        xx[self.index] = 1\n        #xx[np.random.randint(10000)] = 0.001\n```\nHe just outputs 100% training images, which is not allowed. This is different from your kernel V4.",
      "votes": null
    },
    {
      "id": "573522",
      "postDate": "07/12/2019 11:12:07",
      "content": "<p>Oh right, his version 8 scores LB 7.26 and just outputs 100% one image. His version 1 scores LB 7.27 and outputs 99% with 1%.</p>\n\n<p>My point IMHO is that <strong>both</strong> his version 8 <strong>AND</strong> his version 1 are <strong>disqualified</strong> (and my version 4).</p>\n\n<p>I do not think that Wendy is saying \"We are allowed to submit 99% one image blended with 1% another image and score LB 7\". Do you think that Wendy is allowing my version 4 and his version 1?</p>",
      "rawMarkdown": "Oh right, his version 8 scores LB 7.26 and just outputs 100% one image. His version 1 scores LB 7.27 and outputs 99% with 1%.\n\nMy point IMHO is that **both** his version 8 **AND** his version 1 are **disqualified** (and my version 4).\n\nI do not think that Wendy is saying \"We are allowed to submit 99% one image blended with 1% another image and score LB 7\". Do you think that Wendy is allowing my version 4 and his version 1?",
      "votes": null
    },
    {
      "id": "573568",
      "postDate": "07/12/2019 12:27:34",
      "content": "<blockquote>\n  <p>Do you think that Wendy is allowing my version 4 and his version 1?</p>\n</blockquote>\n\n<p>Yes, I thought the OK was for your V4. I thought these changes (99%, 1%) were the reason why you kernel is a \"gray area\" and therefore valid.</p>",
      "rawMarkdown": "&gt; Do you think that Wendy is allowing my version 4 and his version 1?\n\nYes, I thought the OK was for your V4. I thought these changes (99%, 1%) were the reason why you kernel is a \"gray area\" and therefore valid.",
      "votes": null
    },
    {
      "id": "573584",
      "postDate": "07/12/2019 12:56:02",
      "content": "<p>Hmm, I assumed that V6 was in the gray area because its outputted images are notably different than the training images. I assumed V4 was invalid.</p>\n\n<p>V4 Generator is a Perceptron (no hidden layer), therefore it's output are mathematically pixel blends (and 99% with 1%). V6 Discriminator is a Conv Net, therefore it's outputs are not mathematically pixel blends (and 70% with 30%).</p>",
      "rawMarkdown": "Hmm, I assumed that V6 was in the gray area because its outputted images are notably different than the training images. I assumed V4 was invalid.\n\nV4 Generator is a Perceptron (no hidden layer), therefore it's output are mathematically pixel blends (and 99% with 1%). V6 Discriminator is a Conv Net, therefore it's outputs are not mathematically pixel blends (and 70% with 30%).",
      "votes": null
    },
    {
      "id": "573662",
      "postDate": "07/12/2019 15:15:35",
      "content": "<p>On a lighter note , from all these discussion, I vigorously try hyperparameter tuning ,train for 1000 epochs ,\nsqueeze the last drop of Kernel 9 hrs,make MFid score to make me go up in LB by 10 points . \nI jump in joy , by the time I refresh the LB, I am already 20 positions behind . I can understand the frustration of the \npeople who are playing to win it using real GAN , and experiencing the same .</p>\n\n<p>Therefore I made a mental reference point with 40 points  . I calculate the relative position from that . It's not perfect\nbut keeps me happy .</p>",
      "rawMarkdown": "On a lighter note , from all these discussion, I vigorously try hyperparameter tuning ,train for 1000 epochs ,\nsqueeze the last drop of Kernel 9 hrs,make MFid score to make me go up in LB by 10 points . \nI jump in joy , by the time I refresh the LB, I am already 20 positions behind . I can understand the frustration of the \npeople who are playing to win it using real GAN , and experiencing the same .\n\nTherefore I made a mental reference point with 40 points  . I calculate the relative position from that . It's not perfect\nbut keeps me happy .",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 573395,
      "author_name": "francoisdubois",
      "author_url": "",
      "post_date": "07/12/2019 07:59:23",
      "content": "<p>Thank you for your work but the rules don't say anything about memorizing GAN. I would be surprised if they end up being allowed and it would be sad. \nHowever, it would be nice to have clarification about that as soon as possible. I don't want to work too long on generative GAN and at the end not be in the race. </p>",
      "votes": null,
      "replies": [
        {
          "id": 573403,
          "author_name": "jesucristo",
          "author_url": "",
          "post_date": "07/12/2019 08:23:57",
          "content": "<p>I'm 99% sure that are allowed, read this:</p>\n\n<blockquote>\n  <p>This is a gray area and I had to think about it for a while. <strong>For now, I think they are allowed</strong> - but please note that for the private leaderboard we have a different evaluation dataset and model, so by memorizing the training examples you actually might overfit to the training sample distribution. Also the memorization cosine distance still applies in the private leaderboard.</p>\n</blockquote>",
          "votes": null,
          "replies": []
        },
        {
          "id": 573410,
          "author_name": "francoisdubois",
          "author_url": "",
          "post_date": "07/12/2019 08:37:32",
          "content": "<p>Sorry I had missed that. That's quite a shame. I understand that it's too hard to detect memorizing GAN but there is no point anymore to work on this competition ...</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 573416,
          "author_name": "jesucristo",
          "author_url": "",
          "post_date": "07/12/2019 08:45:40",
          "content": "<p>sure! to be honest, I like this top and that's why I keep working on \"common GANs\" and supervised GAN's, but I think as a comp this is a disaster hahaha 😄 feels like competing in a race where some people run, others walk, others ride bikes or even motorcycles. hahaha</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 573404,
      "author_name": "jesucristo",
      "author_url": "",
      "post_date": "07/12/2019 08:24:25",
      "content": "<p>mi serial downvoter is back :)</p>",
      "votes": null,
      "replies": [
        {
          "id": 573414,
          "author_name": "phoenix9032",
          "author_url": "",
          "post_date": "07/12/2019 08:41:38",
          "content": "<p>Serial downvoting is a skewed way of showing flattery :D </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 573419,
      "author_name": "theoviel",
      "author_url": "",
      "post_date": "07/12/2019 08:53:12",
      "content": "<p>Please don't encourage this way to tackle the competition ...</p>",
      "votes": null,
      "replies": [
        {
          "id": 573421,
          "author_name": "jesucristo",
          "author_url": "",
          "post_date": "07/12/2019 08:58:40",
          "content": "<p>sorry <a href=\"/theoviel\">@theoviel</a> encourage what? do you mean memorizer GANs? I did this post and I made public my kernel because they are allowed and looks like they're going to be allowed. I don't like them, but if they are allowed I want to understand them, know how the MiFID penalization works etc \nHowever I still working on \"normal GANs\", like I said:</p>\n\n<blockquote>\n  <p>feels like competing in a race where some people run, others walk, others ride bikes or even motorcycles.</p>\n</blockquote>",
          "votes": null,
          "replies": []
        },
        {
          "id": 573440,
          "author_name": "theoviel",
          "author_url": "",
          "post_date": "07/12/2019 09:30:07",
          "content": "<p>I'm fine with your work and appreciate what you are doing overall. </p>\n\n<p>I may give your kernel a look to understand the metric a bit. However most people will continue on this way to over-abuse the metric to try and get a shiny medal. \nAlthough it is appealing to learn how to score high in this particular competition by producing GANs that are not generative. But those models are pointless.</p>\n\n<p>And note that those GANs are discouraged by the organizers, see <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/98183\">https://www.kaggle.com/c/generative-dog-images/discussion/98183</a></p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 573487,
      "author_name": "cdeotte",
      "author_url": "",
      "post_date": "07/12/2019 10:37:35",
      "content": "<p>I believe version 4 of my Memorization GAN and your kernel (versions 1 and 8) are <strong>disallowed</strong>. Memorization GANs are allowed but the competition still <strong>disallows</strong> submitting images that are too similar to original training images. (And you kernel version 10 does a good job of showing what my version 4's outputted images look like). Below is Wendy's most recent quote from <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/98183#573181\">here</a> with bold emphasis added:</p>\n\n<p>&gt; That said, I agree with all the sentiment here that <strong>we don't want to allow</strong> memorization GANs. However, there are a few reasons that makes it hard to just ban them:\n1. There are different levels of memorization in a GAN. There's no way to quantify how much memorization there is inside a GAN model.\n2. It's extremely hard to check the code for every submission to see if there's memorization. <strong>We will try different ways to test for memorization, and we will remove people if we think there's intentional memorization (for example directly submit some blend of training images)</strong>. But we can't guarantee that we'll find everything.</p>\n\n<p>And here are the original rules</p>\n\n<p>&gt;[Participants] <strong>are not permitted</strong> to make submissions that include any images already classified as dogs or altered versions of such images. </p>\n\n<p>&gt;To enforce and prevent cheating, we reserve the right to: (a) <strong>Visually inspect</strong> all participants' submitted images, (b) review any submitted source code, (c) use these reviews to identify violators or determine winners, and (d) <strong>disqualify participants</strong> from the competition who are found in violation. </p>\n\n<p>So although Wendy said <a href=\"https://www.kaggle.com/c/generative-dog-images/discussion/98183#572299\">here</a></p>\n\n<p>&gt; This is a gray area and I had to think about it for a while. For now, I think [Memorization GANs] are allowed</p>\n\n<p>I don't think she is changing the original rules which disallow submitting images that are too similar to training images. I believe that Wendy is saying \"Memorization GANs are allowed <strong>but you still cannot</strong> submit images that are too close to original training images. We will <strong>be inspecting</strong> the winners manually.\"</p>\n\n<p>Therefore someone would need to submit version 6 of Memorization GAN which only scores LB 90. If they submit version 4 which scores LB 7.5 and finish in the Gold (or submit your kernel), I believe Kaggle will manually inspect the images and determine that it is outputting images that are too similar to original training images and <strong>disqualify</strong> that person.</p>",
      "votes": null,
      "replies": [
        {
          "id": 573503,
          "author_name": "seesee",
          "author_url": "",
          "post_date": "07/12/2019 10:55:04",
          "content": "<p>Are you sure about this? The improved score comes from these lines:\n<code>\n        xx[self.index] = 1\n        #xx[np.random.randint(10000)] = 0.001\n</code>\nHe just outputs 100% training images, which is not allowed. This is different from your kernel V4.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 573522,
          "author_name": "cdeotte",
          "author_url": "",
          "post_date": "07/12/2019 11:12:07",
          "content": "<p>Oh right, his version 8 scores LB 7.26 and just outputs 100% one image. His version 1 scores LB 7.27 and outputs 99% with 1%.</p>\n\n<p>My point IMHO is that <strong>both</strong> his version 8 <strong>AND</strong> his version 1 are <strong>disqualified</strong> (and my version 4).</p>\n\n<p>I do not think that Wendy is saying \"We are allowed to submit 99% one image blended with 1% another image and score LB 7\". Do you think that Wendy is allowing my version 4 and his version 1?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 573568,
          "author_name": "seesee",
          "author_url": "",
          "post_date": "07/12/2019 12:27:34",
          "content": "<blockquote>\n  <p>Do you think that Wendy is allowing my version 4 and his version 1?</p>\n</blockquote>\n\n<p>Yes, I thought the OK was for your V4. I thought these changes (99%, 1%) were the reason why you kernel is a \"gray area\" and therefore valid.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 573584,
          "author_name": "cdeotte",
          "author_url": "",
          "post_date": "07/12/2019 12:56:02",
          "content": "<p>Hmm, I assumed that V6 was in the gray area because its outputted images are notably different than the training images. I assumed V4 was invalid.</p>\n\n<p>V4 Generator is a Perceptron (no hidden layer), therefore it's output are mathematically pixel blends (and 99% with 1%). V6 Discriminator is a Conv Net, therefore it's outputs are not mathematically pixel blends (and 70% with 30%).</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 573662,
      "author_name": "phoenix9032",
      "author_url": "",
      "post_date": "07/12/2019 15:15:35",
      "content": "<p>On a lighter note , from all these discussion, I vigorously try hyperparameter tuning ,train for 1000 epochs ,\nsqueeze the last drop of Kernel 9 hrs,make MFid score to make me go up in LB by 10 points . \nI jump in joy , by the time I refresh the LB, I am already 20 positions behind . I can understand the frustration of the \npeople who are playing to win it using real GAN , and experiencing the same .</p>\n\n<p>Therefore I made a mental reference point with 40 points  . I calculate the relative position from that . It's not perfect\nbut keeps me happy .</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "573315": "### [Memorizer CGAN for dummies](https://www.kaggle.com/jesucristo/memorizer-cgan-for-dummies)\n\n&gt; As you can check here: [Rules clarification on Generative Models](https://www.kaggle.com/c/generative-dog-images/discussion/98183#latest-573181) this method **is allowed.** So I decided to make public my **simple fork**, but sharing my insights :)\n\n**You're going to see:**\n\n1. GANs and CGANs\n2. How to destroy the FID metric.\n    - Best FID\n    - MiFID Penalization\n    \n    \n3. How Supervised GANs work and how to improve it.\n    - Discriminator memory test.\n    - Tricks to avoid MiFID Penalization.\n\n*From a noob point of view ;)*\n\n&gt; This kernel is obviously based on: [Dog Memorizer GAN](https://www.kaggle.com/cdeotte/dog-memorizer-gan) , is pure knowledge so please upvote it, and the post [Memorization GAN Explained](https://www.kaggle.com/c/generative-dog-images/discussion/99215)\n\nIf I see that many people is interested in these kind of kernels, sharing my insights, I can make  a kernel about my **Private LB simulation (Private Dataset and Private NN).**\n\n&gt; hope this helps you to understand chris kernels, how it works, and how to avoid MiFID penalization. If you understood that, you probably know what to do to destroy the LB ;)",
    "573395": "Thank you for your work but the rules don't say anything about memorizing GAN. I would be surprised if they end up being allowed and it would be sad. \nHowever, it would be nice to have clarification about that as soon as possible. I don't want to work too long on generative GAN and at the end not be in the race.",
    "573403": "I'm 99% sure that are allowed, read this:\n\n&gt; This is a gray area and I had to think about it for a while. **For now, I think they are allowed** - but please note that for the private leaderboard we have a different evaluation dataset and model, so by memorizing the training examples you actually might overfit to the training sample distribution. Also the memorization cosine distance still applies in the private leaderboard.",
    "573404": "mi serial downvoter is back :)",
    "573410": "Sorry I had missed that. That's quite a shame. I understand that it's too hard to detect memorizing GAN but there is no point anymore to work on this competition ...",
    "573414": "Serial downvoting is a skewed way of showing flattery :D",
    "573416": "sure! to be honest, I like this top and that's why I keep working on \"common GANs\" and supervised GAN's, but I think as a comp this is a disaster hahaha 😄 feels like competing in a race where some people run, others walk, others ride bikes or even motorcycles. hahaha",
    "573419": "Please don't encourage this way to tackle the competition ...",
    "573421": "sorry @theoviel encourage what? do you mean memorizer GANs? I did this post and I made public my kernel because they are allowed and looks like they're going to be allowed. I don't like them, but if they are allowed I want to understand them, know how the MiFID penalization works etc \nHowever I still working on \"normal GANs\", like I said:\n&gt;  feels like competing in a race where some people run, others walk, others ride bikes or even motorcycles.",
    "573440": "I'm fine with your work and appreciate what you are doing overall. \n\nI may give your kernel a look to understand the metric a bit. However most people will continue on this way to over-abuse the metric to try and get a shiny medal. \nAlthough it is appealing to learn how to score high in this particular competition by producing GANs that are not generative. But those models are pointless.\n\nAnd note that those GANs are discouraged by the organizers, see https://www.kaggle.com/c/generative-dog-images/discussion/98183",
    "573487": "I believe version 4 of my Memorization GAN and your kernel (versions 1 and 8) are **disallowed**. Memorization GANs are allowed but the competition still **disallows** submitting images that are too similar to original training images. (And you kernel version 10 does a good job of showing what my version 4's outputted images look like). Below is Wendy's most recent quote from [here][1] with bold emphasis added:\n\n&gt; That said, I agree with all the sentiment here that **we don't want to allow** memorization GANs. However, there are a few reasons that makes it hard to just ban them:\n1. There are different levels of memorization in a GAN. There's no way to quantify how much memorization there is inside a GAN model.\n2. It's extremely hard to check the code for every submission to see if there's memorization. **We will try different ways to test for memorization, and we will remove people if we think there's intentional memorization (for example directly submit some blend of training images)**. But we can't guarantee that we'll find everything.\n\nAnd here are the original rules\n\n&gt;[Participants] **are not permitted** to make submissions that include any images already classified as dogs or altered versions of such images. \n\n&gt;To enforce and prevent cheating, we reserve the right to: (a) **Visually inspect** all participants' submitted images, (b) review any submitted source code, (c) use these reviews to identify violators or determine winners, and (d) **disqualify participants** from the competition who are found in violation. \n\nSo although Wendy said [here][2]\n\n&gt; This is a gray area and I had to think about it for a while. For now, I think [Memorization GANs] are allowed\n\nI don't think she is changing the original rules which disallow submitting images that are too similar to training images. I believe that Wendy is saying \"Memorization GANs are allowed **but you still cannot** submit images that are too close to original training images. We will **be inspecting** the winners manually.\"\n\nTherefore someone would need to submit version 6 of Memorization GAN which only scores LB 90. If they submit version 4 which scores LB 7.5 and finish in the Gold (or submit your kernel), I believe Kaggle will manually inspect the images and determine that it is outputting images that are too similar to original training images and **disqualify** that person.\n\n[1]: https://www.kaggle.com/c/generative-dog-images/discussion/98183#573181\n[2]: https://www.kaggle.com/c/generative-dog-images/discussion/98183#572299",
    "573503": "Are you sure about this? The improved score comes from these lines:\n```\n        xx[self.index] = 1\n        #xx[np.random.randint(10000)] = 0.001\n```\nHe just outputs 100% training images, which is not allowed. This is different from your kernel V4.",
    "573522": "Oh right, his version 8 scores LB 7.26 and just outputs 100% one image. His version 1 scores LB 7.27 and outputs 99% with 1%.\n\nMy point IMHO is that **both** his version 8 **AND** his version 1 are **disqualified** (and my version 4).\n\nI do not think that Wendy is saying \"We are allowed to submit 99% one image blended with 1% another image and score LB 7\". Do you think that Wendy is allowing my version 4 and his version 1?",
    "573568": "&gt; Do you think that Wendy is allowing my version 4 and his version 1?\n\nYes, I thought the OK was for your V4. I thought these changes (99%, 1%) were the reason why you kernel is a \"gray area\" and therefore valid.",
    "573584": "Hmm, I assumed that V6 was in the gray area because its outputted images are notably different than the training images. I assumed V4 was invalid.\n\nV4 Generator is a Perceptron (no hidden layer), therefore it's output are mathematically pixel blends (and 99% with 1%). V6 Discriminator is a Conv Net, therefore it's outputs are not mathematically pixel blends (and 70% with 30%).",
    "573662": "On a lighter note , from all these discussion, I vigorously try hyperparameter tuning ,train for 1000 epochs ,\nsqueeze the last drop of Kernel 9 hrs,make MFid score to make me go up in LB by 10 points . \nI jump in joy , by the time I refresh the LB, I am already 20 positions behind . I can understand the frustration of the \npeople who are playing to win it using real GAN , and experiencing the same .\n\nTherefore I made a mental reference point with 40 points  . I calculate the relative position from that . It's not perfect\nbut keeps me happy ."
  },
  "source": "meta"
}