{
  "id": 98420,
  "title": "TTA(keras) 질문",
  "url": "/competitions/2019-3rd-ml-month-with-kakr/discussion/98420",
  "author_name": "hwiyong joe",
  "post_date": "2019-07-03T16:37:08.520000",
  "votes": 2,
  "comment_count": 7,
  "views": 0,
  "content": "<p>안녕하세요 현재 tta를 사용하려는 도중에 있습니다.</p>\n\n<p>`def _tta(model,model_size, tta_steps):\n  predictions = []\n  test_generator = None</p>\n\n<p>if(model_size == 224):\n    test_generator = test_generator_224\n  elif(model_size == 299):\n    test_generator = test_generator_299</p>\n\n<p>for i in (range(tta_steps)):\n    prediction = model.predict_generator(generator = test_generator, steps = get_steps(nb_test_samples, batch_size), verbose = 1)\n    predictions.append(prediction)</p>\n\n<p>return np.mean(predictions, axis = 0)`\n(코드가 개행이 안되네요 가독성 죄송합니다)</p>\n\n<p>위 코드를 사용하여 진행하려고 합니다.</p>\n\n<p>그런데 tta를 사용하는 것보다 그렇지 않은 단일(?) 예측의 결과값이 더 좋게 나옵니다.</p>\n\n<p>다른 블로그를 찾아봐도 다른점은 없고, 거의 모든 예제가 1~2% 향상된 점을 보여주어 시도해보았는데 제 경우는 10~20%정도가 감소하게 됩니다.</p>\n\n<p>어떤 점이 문제인지 몰라 글에 담지는 않는 대신 댓글로 달아주시면 해당하는 사항들을 전부 대댓글에 달도록하겠습니다.</p>\n\n<p>keras에서 tta를 사용할 때, 최종 성능이 감소하게 된다면 어떤 부분을 주로 보아야 할까요??</p>",
  "messages": [
    {
      "id": 567902,
      "postDate": "2019-07-04T06:30:39.303Z",
      "content": "<p>성능이 그렇게까지 감소하는건 버그가 있다고 생각이 되네요. tta로 성능이 안좋아질순 있지만 정말 미세하게 안좋아집니다</p>",
      "rawMarkdown": "성능이 그렇게까지 감소하는건 버그가 있다고 생각이 되네요. tta로 성능이 안좋아질순 있지만 정말 미세하게 안좋아집니다",
      "votes": 1,
      "replies": [
        {
          "id": 567931,
          "postDate": "2019-07-04T07:07:01.947Z",
          "content": "<p>아 참고하겠습니다. 감사합니다.\n좋은 커널 또한 감사합니다!</p>",
          "rawMarkdown": "아 참고하겠습니다. 감사합니다.\n좋은 커널 또한 감사합니다!",
          "votes": 2
        }
      ]
    },
    {
      "id": 567729,
      "postDate": "2019-07-03T23:44:45.280Z",
      "content": "<p>generator는 한번 다 쓰고 나면 generator.reset()으로 초기화해줘야 합니다.</p>",
      "rawMarkdown": "generator는 한번 다 쓰고 나면 generator.reset()으로 초기화해줘야 합니다.",
      "votes": 1,
      "replies": [
        {
          "id": 567880,
          "postDate": "2019-07-04T05:42:42.547Z",
          "content": "<p>감사합니다. </p>\n\n<p>test_generato는 코드에 포함되지 않아있는데 초기화시켜서 사용하고 있습니다. 혹시 predictor_generator도 포함되는지 여쭤보고 싶습니다</p>",
          "rawMarkdown": "감사합니다. \n\ntest_generato는 코드에 포함되지 않아있는데 초기화시켜서 사용하고 있습니다. 혹시 predictor_generator도 포함되는지 여쭤보고 싶습니다",
          "votes": 1
        },
        {
          "id": 567890,
          "postDate": "2019-07-04T06:08:41.327Z",
          "content": "<p>```\ntest_preds = np.zeros((len(test), 196))\nfor i in range(n):\n    test_generator = Generator(test) # 케라스 generator\n    test_preds += model.predict_generator(\n        test_generator,\n        verbose=1,\n    )</p>\n\n<p>pred = test_preds.argmax(axis=1)+1\n```\n저는 이렇게 했습니다. 이렇게 하셨는데 안되면 저도 정확한 원인은 잘 모르겠네요 ㅜㅜ</p>",
          "rawMarkdown": "```\ntest_preds = np.zeros((len(test), 196))\nfor i in range(n):\n    test_generator = Generator(test) # 케라스 generator\n    test_preds += model.predict_generator(\n        test_generator,\n        verbose=1,\n    )\n    \npred = test_preds.argmax(axis=1)+1\n```\n저는 이렇게 했습니다. 이렇게 하셨는데 안되면 저도 정확한 원인은 잘 모르겠네요 ㅜㅜ",
          "votes": 1
        }
      ]
    },
    {
      "id": 567527,
      "postDate": "2019-07-03T16:37:08.520Z",
      "content": "<p>안녕하세요 현재 tta를 사용하려는 도중에 있습니다.</p>\n\n<p>`def _tta(model,model_size, tta_steps):\n  predictions = []\n  test_generator = None</p>\n\n<p>if(model_size == 224):\n    test_generator = test_generator_224\n  elif(model_size == 299):\n    test_generator = test_generator_299</p>\n\n<p>for i in (range(tta_steps)):\n    prediction = model.predict_generator(generator = test_generator, steps = get_steps(nb_test_samples, batch_size), verbose = 1)\n    predictions.append(prediction)</p>\n\n<p>return np.mean(predictions, axis = 0)`\n(코드가 개행이 안되네요 가독성 죄송합니다)</p>\n\n<p>위 코드를 사용하여 진행하려고 합니다.</p>\n\n<p>그런데 tta를 사용하는 것보다 그렇지 않은 단일(?) 예측의 결과값이 더 좋게 나옵니다.</p>\n\n<p>다른 블로그를 찾아봐도 다른점은 없고, 거의 모든 예제가 1~2% 향상된 점을 보여주어 시도해보았는데 제 경우는 10~20%정도가 감소하게 됩니다.</p>\n\n<p>어떤 점이 문제인지 몰라 글에 담지는 않는 대신 댓글로 달아주시면 해당하는 사항들을 전부 대댓글에 달도록하겠습니다.</p>\n\n<p>keras에서 tta를 사용할 때, 최종 성능이 감소하게 된다면 어떤 부분을 주로 보아야 할까요??</p>",
      "rawMarkdown": "안녕하세요 현재 tta를 사용하려는 도중에 있습니다.\n\n`def _tta(model,model_size, tta_steps):\n  predictions = []\n  test_generator = None\n  \n  if(model_size == 224):\n    test_generator = test_generator_224\n  elif(model_size == 299):\n    test_generator = test_generator_299\n  \n  for i in (range(tta_steps)):\n    prediction = model.predict_generator(generator = test_generator, steps = get_steps(nb_test_samples, batch_size), verbose = 1)\n    predictions.append(prediction)\n    \n  return np.mean(predictions, axis = 0)`\n(코드가 개행이 안되네요 가독성 죄송합니다)\n\n위 코드를 사용하여 진행하려고 합니다.\n\n그런데 tta를 사용하는 것보다 그렇지 않은 단일(?) 예측의 결과값이 더 좋게 나옵니다.\n\n다른 블로그를 찾아봐도 다른점은 없고, 거의 모든 예제가 1~2% 향상된 점을 보여주어 시도해보았는데 제 경우는 10~20%정도가 감소하게 됩니다.\n\n어떤 점이 문제인지 몰라 글에 담지는 않는 대신 댓글로 달아주시면 해당하는 사항들을 전부 대댓글에 달도록하겠습니다.\n\nkeras에서 tta를 사용할 때, 최종 성능이 감소하게 된다면 어떤 부분을 주로 보아야 할까요??",
      "votes": 2
    },
    {
      "id": 567986,
      "postDate": "2019-07-04T08:18:48.197Z",
      "content": "<p>for i in (range(ttasteps)): <br>\n    testgenerator.reset()\n    prediction = model.predictgenerator(\n        generator = testgenerator, \n        steps = getsteps(nbtestsamples, batch_size), \n        verbose = 1\n    ) \n    predictions.append(prediction)</p>\n\n<p>return np.mean(predictions, axis = 0)</p>",
      "rawMarkdown": "for i in (range(ttasteps)):      \n    testgenerator.reset()\n    prediction = model.predictgenerator(\n        generator = testgenerator, \n        steps = getsteps(nbtestsamples, batch_size), \n        verbose = 1\n    ) \n    predictions.append(prediction)\n\nreturn np.mean(predictions, axis = 0)"
    },
    {
      "id": 567886,
      "postDate": "2019-07-04T06:04:49.700Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 567902,
      "author_name": "saewonYang",
      "author_url": "",
      "post_date": "2019-07-04T06:30:39.303000",
      "content": "<p>성능이 그렇게까지 감소하는건 버그가 있다고 생각이 되네요. tta로 성능이 안좋아질순 있지만 정말 미세하게 안좋아집니다</p>",
      "votes": 1,
      "replies": [
        {
          "id": 567931,
          "author_name": "hwiyong joe",
          "author_url": "",
          "post_date": "2019-07-04T07:07:01.947000",
          "content": "<p>아 참고하겠습니다. 감사합니다.\n좋은 커널 또한 감사합니다!</p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 567729,
      "author_name": "YoonSoo",
      "author_url": "",
      "post_date": "2019-07-03T23:44:45.280000",
      "content": "<p>generator는 한번 다 쓰고 나면 generator.reset()으로 초기화해줘야 합니다.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 567880,
          "author_name": "hwiyong joe",
          "author_url": "",
          "post_date": "2019-07-04T05:42:42.547000",
          "content": "<p>감사합니다. </p>\n\n<p>test_generato는 코드에 포함되지 않아있는데 초기화시켜서 사용하고 있습니다. 혹시 predictor_generator도 포함되는지 여쭤보고 싶습니다</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 567890,
          "author_name": "YoonSoo",
          "author_url": "",
          "post_date": "2019-07-04T06:08:41.327000",
          "content": "<p>```\ntest_preds = np.zeros((len(test), 196))\nfor i in range(n):\n    test_generator = Generator(test) # 케라스 generator\n    test_preds += model.predict_generator(\n        test_generator,\n        verbose=1,\n    )</p>\n\n<p>pred = test_preds.argmax(axis=1)+1\n```\n저는 이렇게 했습니다. 이렇게 하셨는데 안되면 저도 정확한 원인은 잘 모르겠네요 ㅜㅜ</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 567986,
      "author_name": "taehyung",
      "author_url": "",
      "post_date": "2019-07-04T08:18:48.197000",
      "content": "<p>for i in (range(ttasteps)): <br>\n    testgenerator.reset()\n    prediction = model.predictgenerator(\n        generator = testgenerator, \n        steps = getsteps(nbtestsamples, batch_size), \n        verbose = 1\n    ) \n    predictions.append(prediction)</p>\n\n<p>return np.mean(predictions, axis = 0)</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 567886,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-07-04T06:04:49.700000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "567902": "성능이 그렇게까지 감소하는건 버그가 있다고 생각이 되네요. tta로 성능이 안좋아질순 있지만 정말 미세하게 안좋아집니다",
    "567729": "generator는 한번 다 쓰고 나면 generator.reset()으로 초기화해줘야 합니다.",
    "567527": "안녕하세요 현재 tta를 사용하려는 도중에 있습니다.\n\n`def _tta(model,model_size, tta_steps):\n  predictions = []\n  test_generator = None\n  \n  if(model_size == 224):\n    test_generator = test_generator_224\n  elif(model_size == 299):\n    test_generator = test_generator_299\n  \n  for i in (range(tta_steps)):\n    prediction = model.predict_generator(generator = test_generator, steps = get_steps(nb_test_samples, batch_size), verbose = 1)\n    predictions.append(prediction)\n    \n  return np.mean(predictions, axis = 0)`\n(코드가 개행이 안되네요 가독성 죄송합니다)\n\n위 코드를 사용하여 진행하려고 합니다.\n\n그런데 tta를 사용하는 것보다 그렇지 않은 단일(?) 예측의 결과값이 더 좋게 나옵니다.\n\n다른 블로그를 찾아봐도 다른점은 없고, 거의 모든 예제가 1~2% 향상된 점을 보여주어 시도해보았는데 제 경우는 10~20%정도가 감소하게 됩니다.\n\n어떤 점이 문제인지 몰라 글에 담지는 않는 대신 댓글로 달아주시면 해당하는 사항들을 전부 대댓글에 달도록하겠습니다.\n\nkeras에서 tta를 사용할 때, 최종 성능이 감소하게 된다면 어떤 부분을 주로 보아야 할까요??",
    "567986": "for i in (range(ttasteps)):      \n    testgenerator.reset()\n    prediction = model.predictgenerator(\n        generator = testgenerator, \n        steps = getsteps(nbtestsamples, batch_size), \n        verbose = 1\n    ) \n    predictions.append(prediction)\n\nreturn np.mean(predictions, axis = 0)",
    "567886": ""
  }
}