{
  "id": 103725,
  "title": "커널 commit 진행상황 확인하는 tip",
  "url": "/competitions/2019-3rd-ml-month-with-kakr/discussion/103725",
  "author_name": "",
  "post_date": "2019-08-11T10:08:22.850296500Z",
  "votes": 17,
  "comment_count": 3,
  "views": 0,
  "content": "<p>커널 commit누르고 오랜시간이 필요한 경우에 어떻게들 하시나요?\n그냥 기다려도 되지만 진행상황이 안보이는건 참 답답한 일입니다.</p>\n\n<p>그래서 검색하다 보니 commit로그에 메시지를 출력하는 방법이 있더군요.\n아래처럼 함수를 정의해서 print대신에 쓰면 commit중에도 진행상황을 확인하는데 쓸수 있습니다.</p>\n\n<p>```\nimport os\ndef print2(string): <br>\n    os.system(f'echo \\\"{string}\\\"')\n    print(string)</p>\n\n<p>```</p>\n\n<p>대부분의 시간은 트레이닝 하는데 걸리므로 callback 클래스를 아래처럼 정의해서 쓰면 학습상황도 commit로그에 남길수 있습니다.</p>\n\n<p>```\nfrom keras.callbacks import Callback\nfrom datetime import datetime\nfrom pytz import timezone, utc\nKST = timezone('Asia/Seoul')</p>\n\n<p>class EpochLogWrite(Callback):\n    def on_epoch_begin(self, epoch, logs={}):\n        tmx = utc.localize(datetime.utcnow()).astimezone(KST).time()\n        print2('Epoch #{} begins at {}'.format(epoch+1, tmx))\n    def on_epoch_end(self, epoch, logs={}):\n        tmx = utc.localize(datetime.utcnow()).astimezone(KST).time()\n        print2('Epoch #{} ends at {}  acc={} val_acc={} val_f1={}'.format(epoch+1, tmx, round(logs['acc'],4), round(logs['val_acc'],4), round(logs['val_f1_m'],4) ))</p>\n\n<p>callbacks1 = [\n        EpochLogWrite(),\n        EarlyStopping...\n        ReduceLROnPlateau...\n        ModelCheckpoint...\n    ]</p>\n\n<p>history = model.fit_generator(\n        train_generator,\n        steps_per_epoch=get_steps(nb_train_sample, batch_size),\n        epochs=100,\n        validation_data=validation_generator,\n        validation_steps=get_steps(nb_validation_sample, batch_size),\n        verbose=1,\n        callbacks = callbacks1\n)</p>\n\n<p>```</p>\n\n<p>이렇게 하고 commit을 하면 처리중에도 아래처럼 진행상황을 보실수 있습니다.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2340279%2F6dc7ffe47c9f8879586e5a642ed33301%2Fcommit-monitoring.png?generation=1565518221766844&amp;alt=media\" alt=\"\"></p>",
  "messages": [
    {
      "id": "596795",
      "postDate": "08/11/2019 10:08:22",
      "content": "<p>커널 commit누르고 오랜시간이 필요한 경우에 어떻게들 하시나요?\n그냥 기다려도 되지만 진행상황이 안보이는건 참 답답한 일입니다.</p>\n\n<p>그래서 검색하다 보니 commit로그에 메시지를 출력하는 방법이 있더군요.\n아래처럼 함수를 정의해서 print대신에 쓰면 commit중에도 진행상황을 확인하는데 쓸수 있습니다.</p>\n\n<p>```\nimport os\ndef print2(string): <br>\n    os.system(f'echo \\\"{string}\\\"')\n    print(string)</p>\n\n<p>```</p>\n\n<p>대부분의 시간은 트레이닝 하는데 걸리므로 callback 클래스를 아래처럼 정의해서 쓰면 학습상황도 commit로그에 남길수 있습니다.</p>\n\n<p>```\nfrom keras.callbacks import Callback\nfrom datetime import datetime\nfrom pytz import timezone, utc\nKST = timezone('Asia/Seoul')</p>\n\n<p>class EpochLogWrite(Callback):\n    def on_epoch_begin(self, epoch, logs={}):\n        tmx = utc.localize(datetime.utcnow()).astimezone(KST).time()\n        print2('Epoch #{} begins at {}'.format(epoch+1, tmx))\n    def on_epoch_end(self, epoch, logs={}):\n        tmx = utc.localize(datetime.utcnow()).astimezone(KST).time()\n        print2('Epoch #{} ends at {}  acc={} val_acc={} val_f1={}'.format(epoch+1, tmx, round(logs['acc'],4), round(logs['val_acc'],4), round(logs['val_f1_m'],4) ))</p>\n\n<p>callbacks1 = [\n        EpochLogWrite(),\n        EarlyStopping...\n        ReduceLROnPlateau...\n        ModelCheckpoint...\n    ]</p>\n\n<p>history = model.fit_generator(\n        train_generator,\n        steps_per_epoch=get_steps(nb_train_sample, batch_size),\n        epochs=100,\n        validation_data=validation_generator,\n        validation_steps=get_steps(nb_validation_sample, batch_size),\n        verbose=1,\n        callbacks = callbacks1\n)</p>\n\n<p>```</p>\n\n<p>이렇게 하고 commit을 하면 처리중에도 아래처럼 진행상황을 보실수 있습니다.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2340279%2F6dc7ffe47c9f8879586e5a642ed33301%2Fcommit-monitoring.png?generation=1565518221766844&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "커널 commit누르고 오랜시간이 필요한 경우에 어떻게들 하시나요?\n그냥 기다려도 되지만 진행상황이 안보이는건 참 답답한 일입니다.\n\n그래서 검색하다 보니 commit로그에 메시지를 출력하는 방법이 있더군요.\n아래처럼 함수를 정의해서 print대신에 쓰면 commit중에도 진행상황을 확인하는데 쓸수 있습니다.\n\n```\nimport os\ndef print2(string):  \n    os.system(f'echo \\\"{string}\\\"')\n    print(string)\n\n```\n\n대부분의 시간은 트레이닝 하는데 걸리므로 callback 클래스를 아래처럼 정의해서 쓰면 학습상황도 commit로그에 남길수 있습니다.\n\n```\nfrom keras.callbacks import Callback\nfrom datetime import datetime\nfrom pytz import timezone, utc\nKST = timezone('Asia/Seoul')\n\nclass EpochLogWrite(Callback):\n    def on_epoch_begin(self, epoch, logs={}):\n        tmx = utc.localize(datetime.utcnow()).astimezone(KST).time()\n        print2('Epoch #{} begins at {}'.format(epoch+1, tmx))\n    def on_epoch_end(self, epoch, logs={}):\n        tmx = utc.localize(datetime.utcnow()).astimezone(KST).time()\n        print2('Epoch #{} ends at {}  acc={} val_acc={} val_f1={}'.format(epoch+1, tmx, round(logs['acc'],4), round(logs['val_acc'],4), round(logs['val_f1_m'],4) ))\n\ncallbacks1 = [\n        EpochLogWrite(),\n        EarlyStopping...\n        ReduceLROnPlateau...\n        ModelCheckpoint...\n    ]\n    \nhistory = model.fit_generator(\n        train_generator,\n        steps_per_epoch=get_steps(nb_train_sample, batch_size),\n        epochs=100,\n        validation_data=validation_generator,\n        validation_steps=get_steps(nb_validation_sample, batch_size),\n        verbose=1,\n        callbacks = callbacks1\n)\n\n```\n\n이렇게 하고 commit을 하면 처리중에도 아래처럼 진행상황을 보실수 있습니다.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2340279%2F6dc7ffe47c9f8879586e5a642ed33301%2Fcommit-monitoring.png?generation=1565518221766844&amp;alt=media)",
      "votes": null
    },
    {
      "id": "596844",
      "postDate": "08/11/2019 11:57:12",
      "content": "<p>오, 꿀팁이네요. 공유해주셔서 감사합니다~!</p>",
      "rawMarkdown": "오, 꿀팁이네요. 공유해주셔서 감사합니다~!",
      "votes": null
    },
    {
      "id": "597041",
      "postDate": "08/11/2019 17:44:20",
      "content": "<p>이런게 정말 좋은 공유같네요. 감사드립니다! </p>",
      "rawMarkdown": "이런게 정말 좋은 공유같네요. 감사드립니다!",
      "votes": null
    },
    {
      "id": "597942",
      "postDate": "08/13/2019 00:01:35",
      "content": "<p>오오 안그래도 얼만큼 진행되었는지 몰라서 답답했는데 좋네요ㅎㅎ 감사합니다!!!</p>",
      "rawMarkdown": "오오 안그래도 얼만큼 진행되었는지 몰라서 답답했는데 좋네요ㅎㅎ 감사합니다!!!",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 596844,
      "author_name": "tmheo74",
      "author_url": "",
      "post_date": "08/11/2019 11:57:12",
      "content": "<p>오, 꿀팁이네요. 공유해주셔서 감사합니다~!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 597041,
      "author_name": "yangsaewon",
      "author_url": "",
      "post_date": "08/11/2019 17:44:20",
      "content": "<p>이런게 정말 좋은 공유같네요. 감사드립니다! </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 597942,
      "author_name": "plsjlq",
      "author_url": "",
      "post_date": "08/13/2019 00:01:35",
      "content": "<p>오오 안그래도 얼만큼 진행되었는지 몰라서 답답했는데 좋네요ㅎㅎ 감사합니다!!!</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "596795": "커널 commit누르고 오랜시간이 필요한 경우에 어떻게들 하시나요?\n그냥 기다려도 되지만 진행상황이 안보이는건 참 답답한 일입니다.\n\n그래서 검색하다 보니 commit로그에 메시지를 출력하는 방법이 있더군요.\n아래처럼 함수를 정의해서 print대신에 쓰면 commit중에도 진행상황을 확인하는데 쓸수 있습니다.\n\n```\nimport os\ndef print2(string):  \n    os.system(f'echo \\\"{string}\\\"')\n    print(string)\n\n```\n\n대부분의 시간은 트레이닝 하는데 걸리므로 callback 클래스를 아래처럼 정의해서 쓰면 학습상황도 commit로그에 남길수 있습니다.\n\n```\nfrom keras.callbacks import Callback\nfrom datetime import datetime\nfrom pytz import timezone, utc\nKST = timezone('Asia/Seoul')\n\nclass EpochLogWrite(Callback):\n    def on_epoch_begin(self, epoch, logs={}):\n        tmx = utc.localize(datetime.utcnow()).astimezone(KST).time()\n        print2('Epoch #{} begins at {}'.format(epoch+1, tmx))\n    def on_epoch_end(self, epoch, logs={}):\n        tmx = utc.localize(datetime.utcnow()).astimezone(KST).time()\n        print2('Epoch #{} ends at {}  acc={} val_acc={} val_f1={}'.format(epoch+1, tmx, round(logs['acc'],4), round(logs['val_acc'],4), round(logs['val_f1_m'],4) ))\n\ncallbacks1 = [\n        EpochLogWrite(),\n        EarlyStopping...\n        ReduceLROnPlateau...\n        ModelCheckpoint...\n    ]\n    \nhistory = model.fit_generator(\n        train_generator,\n        steps_per_epoch=get_steps(nb_train_sample, batch_size),\n        epochs=100,\n        validation_data=validation_generator,\n        validation_steps=get_steps(nb_validation_sample, batch_size),\n        verbose=1,\n        callbacks = callbacks1\n)\n\n```\n\n이렇게 하고 commit을 하면 처리중에도 아래처럼 진행상황을 보실수 있습니다.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2340279%2F6dc7ffe47c9f8879586e5a642ed33301%2Fcommit-monitoring.png?generation=1565518221766844&amp;alt=media)",
    "596844": "오, 꿀팁이네요. 공유해주셔서 감사합니다~!",
    "597041": "이런게 정말 좋은 공유같네요. 감사드립니다!",
    "597942": "오오 안그래도 얼만큼 진행되었는지 몰라서 답답했는데 좋네요ㅎㅎ 감사합니다!!!"
  },
  "source": "meta"
}