{ "info": { "author": "Jogle Lew", "author_email": "author@example.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Utilities" ], "description": "# Nine Six\n\nUnified tools for Neural Network logging and managing.\n\n## Quick Start\n\nUse pip to install Nine Six modules.\n\n```\npip3 install ninesix\n```\n\n### Pretty Logging \n\n```python\nfrom ninesix import Logger # import logger\nlogger = Logger(\"example_nn\") # Initialize logger\n\nif __name__ == '__main__':\n parser = argparse.ArgumentParser() # Define your argument parser\n ... \n args = parser.args()\n args = logger.config(args, \"argparse\") # Wrap the argparse object to log config\n\n logger.msg(\"We're going to start training...\") # Log text message\n ... # Prepare your model\n for epoch in range(args.epoch):\n logger.progress(\"epoch\", epoch + 1, total=args.epoch) # Record epoch as a progress variable\n ... # Train your model\n logger.value({\"loss\": loss, \"f1\": f1}) # Log value(s) associated with progress variable(s)\n ...\n logger.unwatch(\"epoch\") # Unregister progress variable\n ...\n logger.value({\"final_f1\": final_f1}) # Log value(s)\n logger.msg(\"All done, have fun!\") # Log text message\n```\nThe output you will get at stdout:\n```\n2019-05-14 17:29:09 [Log] (log.py: 44 in __init__()):\nLogger [example_nn] Initialized.\n\n2019-05-14 17:29:09 [Config] (example.py: 189 in ()):\n{\n \"epoch\": 300,\n \"lr\": 0.01,\n \"lr_decay\": 0.0001\n}\n\n2019-05-14 17:29:11 [Log] (example.py: 171 in ()):\nWe're going to start training...\n\n2019-05-14 17:29:22 [Log] (example.py: 237 in ()):\nepoch : 300 / 300 \n------------------------------------------------------------------\nloss: 0.22311973571777344 f1: 90.58 \n\n2019-05-14 17:29:22 [Log] (example.py: 247 in ()):\nfinal_f1: 90.58\n\n2019-05-14 17:29:11 [Log] (example.py: 371 in ()):\nAll done, have fun!\n```\n\nAt the same time, you'll get a JSON log file `~/96log/example_nn/2019-05-14/172909.json`:\n\n```json\n[{\"type\": \"msg\", \"tag\": \"Log\", \"time\": \"2019-05-14 17:29:09\", \"content\": \"JSON Writer Initialized.\"},\n{\"type\": \"config\", \"tag\": \"Log\", \"time\": \"2019-05-14 17:29:09\", \"content\": {\"lr\": 0.01, \"lr_decay\": 0.0001, \"epoch\": 300}},\n{\"type\": \"msg\", \"tag\": \"Log\", \"time\": \"2019-05-14 17:29:11\", \"content\": \"We're going to start training...\"},\n{\"type\": \"value\", \"tag\": \"Log\", \"time\": \"2019-05-14 17:29:12\", \"content\": {\"progress\": {\"epoch\": {\"current\": 50, \"max\": 300}}, \"value\": {\"loss\": 5.2108306884765625, \"f1\": 73.26}}},\n{\"type\": \"value\", \"tag\": \"Log\", \"time\": \"2019-05-14 17:29:13\", \"content\": {\"progress\": {\"epoch\": {\"current\": 100, \"max\": 300}}, \"value\": {\"loss\": 1.3068847656252345, \"f1\": 85.81}}},\n...\n{\"type\": \"value\", \"tag\": \"Log\", \"time\": \"2019-05-14 17:29:22\", \"content\": {\"progress\": {\"epoch\": {\"current\": 300, \"max\": 300}}, \"value\": {\"loss\": 0.22311973571777344, \"f1\": 90.58}}},\n{\"type\": \"value\", \"tag\": \"Log\", \"time\": \"2019-05-14 17:29:22\", \"content\": {\"progress\": {}, \"value\": {\"final_f1\": 90.58}}},\n{\"type\": \"msg\", \"tag\": \"Log\", \"time\": \"2019-05-14 17:29:11\", \"content\": \"All done, have fun!\"}]\n```\n\nYou can try `example.py` which is a complete example.\n\n### Grid Search\n\nCommand Line: \n```\n96grid -p lr 0.1 0.01 0.001 -p epoch 100 to 201 jump 50 -g 1 2 3 -c \"python example.py\"\n```\n\nYou can use `python3 ninesix/tool/grid.py -h` for more help.\n\nPython code:\n\n```python\nfrom ninesix import GridSearch\n\ngs = GridSearch()\n# set environment settings\ngs.cmd_env = \"\"\n# set default command\ngs.cmd_template = \"python3 example.py\" \n# set available GPUs\ngs.gpus = [0]\n# set parameter options\ngs.param_grid = {\n \"lr\": [0.1, 0.01, 0.001],\n \"epoch\": [100, 150, 200]\n}\n# generate scripts\ngs.generate_grid_search()\n# execute scripts\ngs.execute_script()\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/JogleLew/nine-six", "keywords": "Nine Six,nine-six,Logging,Logger,Grid Search", "license": "AGPLv3+", "maintainer": "", "maintainer_email": "", "name": "ninesix", "package_url": "https://pypi.org/project/ninesix/", "platform": "", "project_url": "https://pypi.org/project/ninesix/", "project_urls": { "Homepage": "https://github.com/JogleLew/nine-six" }, "release_url": "https://pypi.org/project/ninesix/0.0.4/", "requires_dist": [ "more-itertools" ], "requires_python": ">=3.0", "summary": "Easy-to-use unified tools for NN logging and managing.", "version": "0.0.4" }, "last_serial": 5336715, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0bb527559e02779fbacb52529b64d57c", "sha256": "63a1502c4291c34812a257d158a79ba4a3361fa5684da7071d63de3054a972ba" }, "downloads": -1, "filename": "ninesix-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0bb527559e02779fbacb52529b64d57c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.0", "size": 21122, "upload_time": "2019-05-14T15:49:37", "url": "https://files.pythonhosted.org/packages/f5/bc/c287348174980334a355869791df3d31eafd931dfb3ae7dbf1e16463e9d1/ninesix-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7de4d3690f79f56bea292e4f1b052a55", "sha256": "2b4b28bcda0962f6074824f56dacda9aa95548254cf6021f8ea716c5e9d769bd" }, "downloads": -1, "filename": "ninesix-0.0.1.tar.gz", "has_sig": false, "md5_digest": "7de4d3690f79f56bea292e4f1b052a55", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.0", "size": 6738, "upload_time": "2019-05-14T15:49:40", "url": "https://files.pythonhosted.org/packages/d8/8c/92e5bd97c52a04e6ed7756f0d312ba32a20c2002f592e798aa0f5f3f04c2/ninesix-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "5ef82ff5adea0ee56f537b026dca8064", "sha256": "241a98f4bd5cd712fad00a7a039fdc1b7c6b2df627fe96c242bd1837f8c0bede" }, "downloads": -1, "filename": "ninesix-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5ef82ff5adea0ee56f537b026dca8064", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.0", "size": 21130, "upload_time": "2019-05-14T15:58:21", "url": "https://files.pythonhosted.org/packages/6d/29/e1fb012ce73056ba18f891b231b01567a498d1ea1a5066ccf614419e4b1e/ninesix-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6f9337fc18c87d6490723aaaedd92e8e", "sha256": "6f710854a6ee1011aa54350839e9105799aacd79ceb321009c8f8afb75732ef4" }, "downloads": -1, "filename": "ninesix-0.0.2.tar.gz", "has_sig": false, "md5_digest": "6f9337fc18c87d6490723aaaedd92e8e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.0", "size": 6767, "upload_time": "2019-05-14T15:58:23", "url": "https://files.pythonhosted.org/packages/0b/32/3ea3656f8134f292ae2d01006cac19ca1d1d1adecb9ce33a13d15a613dc0/ninesix-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "687948717b814d68420561c5afc9fa81", "sha256": "4ac8fac670bee0ba455fb748e191398713e66c2b26146188f940d6f6ed818b66" }, "downloads": -1, "filename": "ninesix-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "687948717b814d68420561c5afc9fa81", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.0", "size": 21240, "upload_time": "2019-05-15T02:53:31", "url": "https://files.pythonhosted.org/packages/4e/96/f4936510d868e15d5585ff58fe8990b893768cecc9a42b2a9588662f0dd4/ninesix-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a75d413b650b5cf81703e29921f1276", "sha256": "6d1e31beffc2a34d006a0940a39e5867dad3c722a148d477cf9291c5f17c5c2b" }, "downloads": -1, "filename": "ninesix-0.0.3.tar.gz", "has_sig": false, "md5_digest": "5a75d413b650b5cf81703e29921f1276", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.0", "size": 6876, "upload_time": "2019-05-15T02:53:33", "url": "https://files.pythonhosted.org/packages/f4/b6/26af007497041e283165c1c6acfe335a06fc161f7ff576600ff9bac6e220/ninesix-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "09f56c8ccf06bfb8609f72809a51c40c", "sha256": "aa3924e3c2ff376e52dc5c719bfc41334080956cb7d982df7cdd89aa5198d6bf" }, "downloads": -1, "filename": "ninesix-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "09f56c8ccf06bfb8609f72809a51c40c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.0", "size": 21306, "upload_time": "2019-05-30T10:41:01", "url": "https://files.pythonhosted.org/packages/89/1f/cfe560417061fcb1d07414b783cd4eab69be91e94c648599f6cd41f5a60c/ninesix-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e8e04562c71692628232de194aead114", "sha256": "6a215f9acfc2ceae8dc737dfccad2bfe3bac6c14d67d6e70bf2d7eae42d61e7f" }, "downloads": -1, "filename": "ninesix-0.0.4.tar.gz", "has_sig": false, "md5_digest": "e8e04562c71692628232de194aead114", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.0", "size": 7001, "upload_time": "2019-05-30T10:41:05", "url": "https://files.pythonhosted.org/packages/a8/3a/50dc16d6ce3b4b9c5e581c7ba91b74003ca8461f1342a1759e32adac052c/ninesix-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "09f56c8ccf06bfb8609f72809a51c40c", "sha256": "aa3924e3c2ff376e52dc5c719bfc41334080956cb7d982df7cdd89aa5198d6bf" }, "downloads": -1, "filename": "ninesix-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "09f56c8ccf06bfb8609f72809a51c40c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.0", "size": 21306, "upload_time": "2019-05-30T10:41:01", "url": "https://files.pythonhosted.org/packages/89/1f/cfe560417061fcb1d07414b783cd4eab69be91e94c648599f6cd41f5a60c/ninesix-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e8e04562c71692628232de194aead114", "sha256": "6a215f9acfc2ceae8dc737dfccad2bfe3bac6c14d67d6e70bf2d7eae42d61e7f" }, "downloads": -1, "filename": "ninesix-0.0.4.tar.gz", "has_sig": false, "md5_digest": "e8e04562c71692628232de194aead114", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.0", "size": 7001, "upload_time": "2019-05-30T10:41:05", "url": "https://files.pythonhosted.org/packages/a8/3a/50dc16d6ce3b4b9c5e581c7ba91b74003ca8461f1342a1759e32adac052c/ninesix-0.0.4.tar.gz" } ] }