{ "info": { "author": "Seb Arnold", "author_email": "smr.arnold@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "

\n\n--------------------------------------------------------------------------------\n\n[![Build Status](https://travis-ci.org/learnables/cherry.svg?branch=master)](https://travis-ci.org/learnables/cherry)\n\nCherry is a reinforcement learning framework for researchers built on top of PyTorch.\n\nUnlike other reinforcement learning implementations, cherry doesn't implement a single monolithic interface to existing algorithms.\nInstead, it provides you with low-level, common tools to write your own algorithms.\nDrawing from the UNIX philosophy, each tool strives to be as independent from the rest of the framework as possible.\nSo if you don't like a specific tool, you don\u2019t need to use it.\n\n**Features**\n\n* Pythonic and low-level interface *\u00e0 la* Pytorch.\n* Support for tabular (!) and function approximation algorithms.\n* Various OpenAI Gym environment wrappers.\n* Helper functions for popular algorithms. (e.g. A2C, DDPG, TRPO, PPO, SAC)\n* Logging, visualization, and debugging tools.\n* Painless and efficient distributed training on CPUs and GPUs.\n* Unit, integration, and regression tested, continuously integrated.\n\nTo learn more about the tools and philosophy behind cherry, check out our [Getting Started tutorial](http://cherry-rl.net/tutorials/getting_started/).\n\n## Example\n\nThe following snippet showcases some of the tools offered by cherry.\n\n~~~python\nimport cherry as ch\n\n# Wrap environments\nenv = gym.make('CartPole-v0')\nenv = ch.envs.Logger(env, interval=1000)\nenv = ch.envs.Torch(env)\n\npolicy = PolicyNet()\noptimizer = optim.Adam(policy.parameters(), lr=1e-2)\nreplay = ch.ExperienceReplay() # Manage transitions\n\nfor step in range(1000):\n state = env.reset()\n while True:\n mass = Categorical(policy(state))\n action = mass.sample()\n log_prob = mass.log_prob(action)\n next_state, reward, done, _ = env.step(action)\n\n # Build the ExperienceReplay\n replay.append(state, action, reward, next_state, done, log_prob=log_prob)\n if done:\n break\n else:\n state = next_state\n\n # Discounting and normalizing rewards\n rewards = ch.td.discount(0.99, replay.reward(), replay.done())\n rewards = ch.normalize(rewards)\n\n loss = -th.sum(replay.log_prob() * rewards)\n optimizer.zero_grad()\n loss.backward()\n optimizer.step()\n replay.empty()\n~~~\n\nMany more high-quality examples are available in the [examples/](./examples/) folder.\n\n## Installation\n\n**Note** Cherry is considered in early alpha release. Stuff might break.\n\n```\npip install cherry-rl\n```\n\n## Documentation\n\nDocumentation and tutorials are available on cherry\u2019s website: [http://cherry-rl.net](http://cherry-rl.net).\n\n## Contributing\n\nFirst, thanks for your consideration in contributing to cherry.\nHere are a couple of guidelines we strive to follow.\n\n* It's always a good idea to open an issue first, where we can discuss how to best proceed.\n* If you want to contribute a new example using cherry, it would preferably stand in a single file.\n* If you would like to contribute a new feature to the core library, we suggest to first implement an example showcasing your new functionality. Doing so is quite useful:\n * it allows for automatic testing,\n * it ensures that the functionality is correctly implemented,\n * it shows users how to use your functionality, and\n * it gives a concrete example when discussing the best way to merge your implementation.\n\nWe don't have forums, but are happy to discuss with you on slack.\nMake sure to send an email to [smr.arnold@gmail.com](mailto:smr.arnold@gmail.com) to get an invite.\n\n## Acknowledgements\n\nCherry draws inspiration from many reinforcement learning implementations, including\n\n* [OpenAI Baselines](https://github.com/openai/baselines),\n* John Schulman's [implementations](https://github.com/joschu/modular_rl)\n* Ilya Kostrikov's [implementations](https://github.com/ikostrikov/pytorch-a2c-ppo-acktr),\n* Shangtong Zhang's [implementations](https://github.com/ShangtongZhang/DeepRL),\n* Dave Abel's [implementations](https://github.com/david-abel/simple_rl/),\n* Vitchyr Pong's [implementations](https://github.com/vitchyr/rlkit),\n* Kai Arulkumaran's [implementations](https://github.com/Kaixhin/spinning-up-basic),\n* [RLLab](https://github.com/rll/rllab) / [Garage](https://github.com/rlworkgroup/garage).\n\n\n## Why 'cherry' ?\n\nBecause it's the sweetest part of [the cake](https://twitter.com/ylecun/status/1097532314614034433).", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/learnables/cherry/archive/0.1.2.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://learnables.github.com/cherry", "keywords": "", "license": "License :: OSI Approved :: Apache Software License", "maintainer": "", "maintainer_email": "", "name": "cherry-rl", "package_url": "https://pypi.org/project/cherry-rl/", "platform": "", "project_url": "https://pypi.org/project/cherry-rl/", "project_urls": { "Download": "https://github.com/learnables/cherry/archive/0.1.2.zip", "Homepage": "https://learnables.github.com/cherry" }, "release_url": "https://pypi.org/project/cherry-rl/0.1.2/", "requires_dist": null, "requires_python": "", "summary": "PyTorch Reinforcement Learning Framework for Researchers", "version": "0.1.2" }, "last_serial": 5921726, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "8b101fd3ff00cdda54ce7e0fb9542f13", "sha256": "5b14479767d043a9d998c080424155adc291a1e32efb5428000a1cb8120be9ef" }, "downloads": -1, "filename": "cherry-rl-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8b101fd3ff00cdda54ce7e0fb9542f13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8891, "upload_time": "2018-12-10T08:09:15", "url": "https://files.pythonhosted.org/packages/ea/fe/b13d509a628a46d15fbcb777305ae148e3412c3498988631e13e0ded0888/cherry-rl-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "dd1dc8b5cd64477ff8d9fd5175f13900", "sha256": "a8d3b2cccb844ed342bb3d590ed33bda892b8bc0b608cd73188a8813ec0c81e9" }, "downloads": -1, "filename": "cherry-rl-0.0.2.tar.gz", "has_sig": false, "md5_digest": "dd1dc8b5cd64477ff8d9fd5175f13900", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16065, "upload_time": "2019-02-03T08:36:21", "url": "https://files.pythonhosted.org/packages/8d/a2/fe299ba7971a723300a2c967c96b07887e83e12591bd9928bdf2d4faaca0/cherry-rl-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "61fc4468d6925e7297b8b9101ea1283a", "sha256": "b300042f00f591cbdbccb69b2adff902f41be6d790f91a5fe9860f66a131a59e" }, "downloads": -1, "filename": "cherry-rl-0.0.3.tar.gz", "has_sig": false, "md5_digest": "61fc4468d6925e7297b8b9101ea1283a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16437, "upload_time": "2019-02-07T15:19:57", "url": "https://files.pythonhosted.org/packages/0b/03/600047771785b1371daf64100197e196c93f51015191dccf4e57f3d82e86/cherry-rl-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "1450f1e017fd0cc9634816a6298bf540", "sha256": "47dbf87827459110d5ee48dce72265dfdac493a53da20a63169423bdb0099165" }, "downloads": -1, "filename": "cherry-rl-0.0.4.tar.gz", "has_sig": false, "md5_digest": "1450f1e017fd0cc9634816a6298bf540", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16901, "upload_time": "2019-02-20T19:10:17", "url": "https://files.pythonhosted.org/packages/97/52/31023bc9db06831c79b7b085dfbe884302a4cd6a9c92eb84d8c5a62ce493/cherry-rl-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "1b5dd6722e9330cf0252434c0e1a1558", "sha256": "daa8793b5574df96109842c850b1086c6d9e7cf46fd37bc205a4621529c44997" }, "downloads": -1, "filename": "cherry-rl-0.0.5.tar.gz", "has_sig": false, "md5_digest": "1b5dd6722e9330cf0252434c0e1a1558", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18921, "upload_time": "2019-02-28T19:22:19", "url": "https://files.pythonhosted.org/packages/ac/db/64f7d14d04822c48bb50bbea91d111817ee9206f8f58e50e93cd98f6b12f/cherry-rl-0.0.5.tar.gz" } ], "0.0.5.1": [ { "comment_text": "", "digests": { "md5": "7704a663c4f99e81504ac703acc36a63", "sha256": "6459c041d6d76d44f8ac8f373ebf64b711833faae5f0e738357f84e2e3a205ff" }, "downloads": -1, "filename": "cherry-rl-0.0.5.1.tar.gz", "has_sig": false, "md5_digest": "7704a663c4f99e81504ac703acc36a63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18928, "upload_time": "2019-02-28T19:27:36", "url": "https://files.pythonhosted.org/packages/72/ec/1165b635150cde38e26db9cb4570ddfb4716f12dd2595043aed951b61169/cherry-rl-0.0.5.1.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "f0736e1127ee36ea2e2d9daf22662be1", "sha256": "abdbf0c09b9e710c4dbc04672ed2a4bd24b9b65b6e30516b592755a8bf98d2dc" }, "downloads": -1, "filename": "cherry-rl-0.0.6.tar.gz", "has_sig": false, "md5_digest": "f0736e1127ee36ea2e2d9daf22662be1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18930, "upload_time": "2019-02-28T19:29:17", "url": "https://files.pythonhosted.org/packages/f7/53/f8bd0a9a50b39439d475b0ef897d46326ce5b4461e6a39c1b9a23f19dfbe/cherry-rl-0.0.6.tar.gz" } ], "0.0.6.1": [ { "comment_text": "", "digests": { "md5": "4623ca67caeafa883f4485a0c10055db", "sha256": "ced4c2791607fb3ff04b4f69ff721a52ce566bac43fdf07671eb05ef1c4b24e4" }, "downloads": -1, "filename": "cherry-rl-0.0.6.1.tar.gz", "has_sig": false, "md5_digest": "4623ca67caeafa883f4485a0c10055db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18943, "upload_time": "2019-02-28T19:34:11", "url": "https://files.pythonhosted.org/packages/f9/87/7098614d448c45359bf0dba24e4fa7116d67dd09dbe19941b25ef071bf68/cherry-rl-0.0.6.1.tar.gz" } ], "0.0.6.2": [ { "comment_text": "", "digests": { "md5": "f198710e3e17c5afdb590c6d8deabcd5", "sha256": "4b3b43381919db2e7c9ae0e06fef43d50f9de5063b4332e3c3720967bed0f42f" }, "downloads": -1, "filename": "cherry-rl-0.0.6.2.tar.gz", "has_sig": false, "md5_digest": "f198710e3e17c5afdb590c6d8deabcd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18943, "upload_time": "2019-02-28T19:35:37", "url": "https://files.pythonhosted.org/packages/b4/d7/78a49bb81dca1cb6f7971b563e2b0dc5616edc81ddad825699b2b0b48cce/cherry-rl-0.0.6.2.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "76773b86a95296e0b8fc327f9699e015", "sha256": "20c90504f818dabc914009e71a053576329111311a57aa7ae987340ca83a0029" }, "downloads": -1, "filename": "cherry-rl-0.0.7.tar.gz", "has_sig": false, "md5_digest": "76773b86a95296e0b8fc327f9699e015", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26049, "upload_time": "2019-03-09T05:34:57", "url": "https://files.pythonhosted.org/packages/50/9c/9fb6e63396ff8e8e21a122870f3650e6deb14a640f43819d4a5e0f616af1/cherry-rl-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "4d87432071d5a66aaf2c45d50df2a321", "sha256": "fd39d4bc04b30f7a9a15f9f817e556d3b511f4647e4c46ee9c8a9ea9ab96ae0c" }, "downloads": -1, "filename": "cherry-rl-0.0.8.tar.gz", "has_sig": false, "md5_digest": "4d87432071d5a66aaf2c45d50df2a321", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29556, "upload_time": "2019-03-22T03:00:44", "url": "https://files.pythonhosted.org/packages/a5/0c/5886983fe57eb0c14607e6ada858052e19ef0a2503fdbb269bd0ac011c66/cherry-rl-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "8284713caec2f191b5fda52ebc844c11", "sha256": "e4715f121ac9be6c8504e2eb31ca95cd086e2806f0ca45cf5aa586e5e58cac77" }, "downloads": -1, "filename": "cherry-rl-0.0.9.tar.gz", "has_sig": false, "md5_digest": "8284713caec2f191b5fda52ebc844c11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27304, "upload_time": "2019-04-20T19:06:36", "url": "https://files.pythonhosted.org/packages/0b/6c/0550550953c35ead64d863b146def325bcba7f89fb2af79ef26ad3b63230/cherry-rl-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "e0516d4bfd94d0873f586742df9fba81", "sha256": "0ce36ca1c4cf7f69f76bf1c35a03bc406e687c03f2a096372562c07fa2e5d8b1" }, "downloads": -1, "filename": "cherry-rl-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e0516d4bfd94d0873f586742df9fba81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34120, "upload_time": "2019-06-08T06:48:00", "url": "https://files.pythonhosted.org/packages/bd/f2/7c5f179b48529646c2acf327cc330dabb82ba0e501789d39a7b70fed0d74/cherry-rl-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "158eb6c3faf0e179f3a53a0fbbe59a27", "sha256": "05955a32bcf3126f9260e41745d1032ab8ec86d41022b7ad5bd4431e7605568d" }, "downloads": -1, "filename": "cherry-rl-0.1.1.tar.gz", "has_sig": false, "md5_digest": "158eb6c3faf0e179f3a53a0fbbe59a27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38933, "upload_time": "2019-08-16T22:50:13", "url": "https://files.pythonhosted.org/packages/31/fc/712b18270d596e18004d62f5c146302a0659228e3aabad500408f448f08f/cherry-rl-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "d07daf5a515d66436fb67f4f3e240e0c", "sha256": "8f5afc67100ecbd5a76538674825c60488fd122f3e17cf95b913042b1d472ea0" }, "downloads": -1, "filename": "cherry-rl-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d07daf5a515d66436fb67f4f3e240e0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40321, "upload_time": "2019-10-03T05:02:50", "url": "https://files.pythonhosted.org/packages/6b/18/1e50839a5a75dbe250d9e5e584ccc8ff2d514b86aea403c81a25726c102e/cherry-rl-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d07daf5a515d66436fb67f4f3e240e0c", "sha256": "8f5afc67100ecbd5a76538674825c60488fd122f3e17cf95b913042b1d472ea0" }, "downloads": -1, "filename": "cherry-rl-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d07daf5a515d66436fb67f4f3e240e0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40321, "upload_time": "2019-10-03T05:02:50", "url": "https://files.pythonhosted.org/packages/6b/18/1e50839a5a75dbe250d9e5e584ccc8ff2d514b86aea403c81a25726c102e/cherry-rl-0.1.2.tar.gz" } ] }