{ "info": { "author": "Miles Granger", "author_email": "miles59923@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# pyrus-nn\n\n[![Build Status](https://milesgranger.visualstudio.com/builds/_apis/build/status/pyrus-nn?branchName=master)](https://milesgranger.visualstudio.com/builds/_build/latest?definitionId=1&branchName=master)\n[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=milesgranger/black-jack)](https://dependabot.com)\n[![crates.io](http://meritbadge.herokuapp.com/pyrus-nn)](https://crates.io/crates/pyrus-nn)\n\n[Rust API Documentation](https://docs.rs/pyrus-nn)\n\nLightweight neural network framework written in Rust, with _thin_ python bindings.\n\n- Features:\n - Serialize networks into/from YAML & JSON!\n - Rust -> serde compatible\n - Python -> `network.to_dict()` & `Sequential.from_dict()`\n - Python install requires _zero_ dependencies\n - No external system libs to install \n\n- Draw backs:\n - Only supports generic gradient descent. \n - Fully connected (Dense) layers only so far\n - Activation functions limited to linear, tanh, sigmoid and softmax\n - Cost functions limited to MSE, MAE, Cross Entropy and Accuracy\n\n### Install:\n\nPython:\n```\npip install pyrus-nn # Has ZERO dependencies!\n```\n\nRust:\n```toml\n[dependencies]\npyrus-nn = \"0.2.1\"\n```\n\n\n\n### From Python\n```python\nfrom pyrus_nn.models import Sequential\nfrom pyrus_nn.layers import Dense\n\nmodel = Sequential(lr=0.001, n_epochs=10)\nmodel.add(Dense(n_input=12, n_output=24, activation='sigmoid'))\nmodel.add(Dense(n_input=24, n_output=1, activation='sigmoid'))\n\n# Create some X and y, each of which must be 2d\nX = [list(range(12)) for _ in range(10)]\ny = [[i] for i in range(10)] \n\nmodel.fit(X, y)\nout = model.predict(X)\n\n```\n\n---\n\n### From Rust\n```rust\nuse ndarray::Array2;\nuse pyrus_nn::{network::Sequential, layers::Dense};\n\n\n// Network with 4 inputs and 1 output.\nfn main() {\n let mut network = Sequential::new(0.001, 100, 32, CostFunc::CrossEntropy);\n assert!(\n network.add(Dense::new(4, 5)).is_ok()\n );\n assert!(\n network.add(Dense::new(5, 6)).is_ok()\n );\n assert!(\n network.add(Dense::new(6, 4)).is_ok()\n );\n assert!(\n network.add(Dense::new(4, 1)).is_ok()\n );\n\n let X: Array2 = ...\n let y: Array2 = ...\n\n network.fit(X.view(), y.view());\n\n let yhat: Array2 = network.predict(another_x.view());\n}\n\n```\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pyrus-nn", "package_url": "https://pypi.org/project/pyrus-nn/", "platform": "", "project_url": "https://pypi.org/project/pyrus-nn/", "project_urls": null, "release_url": "https://pypi.org/project/pyrus-nn/0.2.1/", "requires_dist": null, "requires_python": "", "summary": "Micro Neural Network framework implemented in Rust w/ Python bindings", "version": "0.2.1" }, "last_serial": 5186992, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "78889ecf0a851006fc188c3a7540c4d8", "sha256": "27e3a3dcc9f3caa708a6f57057e1e9b29988e14c57a892c42f59a94451aaebd1" }, "downloads": -1, "filename": "pyrus_nn-0.2.0-cp27-cp27m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "78889ecf0a851006fc188c3a7540c4d8", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 985596, "upload_time": "2019-04-07T16:51:38", "url": "https://files.pythonhosted.org/packages/2c/92/7d3212ba6ec869fc7f89ec55a6c87e963d37fa3b2ec96808714b5815b8df/pyrus_nn-0.2.0-cp27-cp27m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "163f26002ebc135a501a84ea0f82db17", "sha256": "d4550040b26d5a86b06362603abdb85069ebb92d6edcce012d25e050892bfe17" }, "downloads": -1, "filename": "pyrus_nn-0.2.0-cp27-cp27mu-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "163f26002ebc135a501a84ea0f82db17", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 985605, "upload_time": "2019-04-07T16:51:40", "url": "https://files.pythonhosted.org/packages/ca/58/5fc3354c9f108b65f5ca832e7ee85a9c3a21a1793276fb294d56216f3ea8/pyrus_nn-0.2.0-cp27-cp27mu-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a4c04f307a8d4a8ecd56e7b629b468be", "sha256": "ee35c4b2539ec1fc296a52e27741be3d4b76e4494277ea204aa27087d53aa39e" }, "downloads": -1, "filename": "pyrus_nn-0.2.0-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "a4c04f307a8d4a8ecd56e7b629b468be", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 1963227, "upload_time": "2019-04-07T16:51:42", "url": "https://files.pythonhosted.org/packages/cc/a0/6c2e24482df0c34288097be00fdb1197462111a009729f8b42c72a0a56be/pyrus_nn-0.2.0-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "d0d1dff3cc277abdfa6ca4d41bcce8d9", "sha256": "d464c8b252dd768b8b8f5666e01c09b91b21db39007fc249e72348a855a93751" }, "downloads": -1, "filename": "pyrus_nn-0.2.0-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "d0d1dff3cc277abdfa6ca4d41bcce8d9", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 2940629, "upload_time": "2019-04-07T16:51:44", "url": "https://files.pythonhosted.org/packages/ce/3e/729bf5f1ac8361347aa42e07c616a89aa345a230a27d1c89a029e86bf1d6/pyrus_nn-0.2.0-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "02676bf4b91f8aeef2d57b0e1a0afd53", "sha256": "bae07957825f32e19c04e2b0692e5cfc0bcd162b1d2610408a5027f3bef7a4df" }, "downloads": -1, "filename": "pyrus_nn-0.2.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "02676bf4b91f8aeef2d57b0e1a0afd53", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 483408, "upload_time": "2019-04-07T16:50:33", "url": "https://files.pythonhosted.org/packages/ed/12/3681953b002c19568ed2aafbb2e3ea6b6e6af210b558a104d9db2e0fd60a/pyrus_nn-0.2.0-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "7bab425b50bf6688b296f0e76e65fc4a", "sha256": "a23d28edf205a53237963640498564b1c78800606ba640070f5271857d3a4935" }, "downloads": -1, "filename": "pyrus_nn-0.2.0-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "7bab425b50bf6688b296f0e76e65fc4a", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 3918001, "upload_time": "2019-04-07T16:51:46", "url": "https://files.pythonhosted.org/packages/85/f7/87c727ba90fcbbbcad6ce4ebe92dbaf8a13fc222c0bc0ec33aa2e279aea8/pyrus_nn-0.2.0-cp37-cp37m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "faaad6d1917470765516f8ca72198cbc", "sha256": "3a417b093125b8c1f57c7fa8d4da608146aa66e00cb89edf9b306e683f7f11b0" }, "downloads": -1, "filename": "pyrus_nn-0.2.0-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "faaad6d1917470765516f8ca72198cbc", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 483256, "upload_time": "2019-04-07T16:54:03", "url": "https://files.pythonhosted.org/packages/62/e2/a5f86f8162e82f961b892abcfc2f1f1c4e8d1745d17df4d6d4f427c9cae9/pyrus_nn-0.2.0-cp37-cp37m-win_amd64.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c1a4395255b6cb43a04848cff93dab8b", "sha256": "cc93fb547ebd95d0f59e33e45e459db99d131d34daa5c0811542b00ee8de64c8" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp27-cp27m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "c1a4395255b6cb43a04848cff93dab8b", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 989527, "upload_time": "2019-04-25T09:21:41", "url": "https://files.pythonhosted.org/packages/25/9d/523d6aedb8cb21cc335babaa65b762423dd01bf93374b11e4464774b3095/pyrus_nn-0.2.1-cp27-cp27m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "07db828f178833a1d95e42108a5d2f4f", "sha256": "1e9d2cdb95bfb82bb6b70325edeb158f53b143165755d811e324becbf046bea3" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp27-cp27mu-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "07db828f178833a1d95e42108a5d2f4f", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 989522, "upload_time": "2019-04-25T09:21:43", "url": "https://files.pythonhosted.org/packages/36/a9/eaeb486bbde169757ddd54ed0f7f3a07398478403d0c1bfe66c603fc44dc/pyrus_nn-0.2.1-cp27-cp27mu-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a5b0bf08a2087044f23a12080fb99f66", "sha256": "dc345d8b4e21d18262641340a3fed7ea5f94c8667fd4663b82dfc5ab944df978" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "a5b0bf08a2087044f23a12080fb99f66", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 1972311, "upload_time": "2019-04-25T09:21:45", "url": "https://files.pythonhosted.org/packages/98/2b/fc6abe651ca8b8ecc24a798c78c7f5e4b0b4b473d4f96ccbbbb29c268f95/pyrus_nn-0.2.1-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "7653d9c750f887f324b20338fbfed0bb", "sha256": "d87623c52ab0f9b57c8e0f3c2c554537a274f9fe27020d58ff79de6844878ffc" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "7653d9c750f887f324b20338fbfed0bb", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 2955074, "upload_time": "2019-04-25T09:21:47", "url": "https://files.pythonhosted.org/packages/d8/03/330440ea9556123011fa957d2db893ad15e5c19c5cdc95f185295391f5f3/pyrus_nn-0.2.1-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "2caa3918b90bbb2bf6b8615ab0f44852", "sha256": "9e8333e8cc7a5c47b765c79551a97075c5d1af7fbdc3da0fde0ff1bd149e0932" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "2caa3918b90bbb2bf6b8615ab0f44852", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 488609, "upload_time": "2019-04-25T09:23:31", "url": "https://files.pythonhosted.org/packages/d0/ba/5b28feb149a5a0d22bd9b09942fda15e965566b9fd5b3323fea109152ddf/pyrus_nn-0.2.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "bb86e3f714617a6629b9af2a2bca599e", "sha256": "53320d65328e2ffa5695bdd974bb740c92d8ede8be87707c8420aaacf6c5caad" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "bb86e3f714617a6629b9af2a2bca599e", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 3937737, "upload_time": "2019-04-25T09:21:50", "url": "https://files.pythonhosted.org/packages/12/c7/1267f7d063c5b19d6015d1fe8748751a43abc558a3df15676ab4dca1a181/pyrus_nn-0.2.1-cp37-cp37m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f3661c1f763223d0792aaa9e26dd8f1c", "sha256": "a81181e278190c05dd36fbf5d154f7b6c7b3b9382026273d889a9d299e00bd1d" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "f3661c1f763223d0792aaa9e26dd8f1c", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 488513, "upload_time": "2019-04-25T09:23:18", "url": "https://files.pythonhosted.org/packages/fb/79/21157ab4821966f7ab6ed270988e8b6313fcc0676f87a2a12853667e12e3/pyrus_nn-0.2.1-cp37-cp37m-win_amd64.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c1a4395255b6cb43a04848cff93dab8b", "sha256": "cc93fb547ebd95d0f59e33e45e459db99d131d34daa5c0811542b00ee8de64c8" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp27-cp27m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "c1a4395255b6cb43a04848cff93dab8b", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 989527, "upload_time": "2019-04-25T09:21:41", "url": "https://files.pythonhosted.org/packages/25/9d/523d6aedb8cb21cc335babaa65b762423dd01bf93374b11e4464774b3095/pyrus_nn-0.2.1-cp27-cp27m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "07db828f178833a1d95e42108a5d2f4f", "sha256": "1e9d2cdb95bfb82bb6b70325edeb158f53b143165755d811e324becbf046bea3" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp27-cp27mu-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "07db828f178833a1d95e42108a5d2f4f", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 989522, "upload_time": "2019-04-25T09:21:43", "url": "https://files.pythonhosted.org/packages/36/a9/eaeb486bbde169757ddd54ed0f7f3a07398478403d0c1bfe66c603fc44dc/pyrus_nn-0.2.1-cp27-cp27mu-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a5b0bf08a2087044f23a12080fb99f66", "sha256": "dc345d8b4e21d18262641340a3fed7ea5f94c8667fd4663b82dfc5ab944df978" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "a5b0bf08a2087044f23a12080fb99f66", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 1972311, "upload_time": "2019-04-25T09:21:45", "url": "https://files.pythonhosted.org/packages/98/2b/fc6abe651ca8b8ecc24a798c78c7f5e4b0b4b473d4f96ccbbbb29c268f95/pyrus_nn-0.2.1-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "7653d9c750f887f324b20338fbfed0bb", "sha256": "d87623c52ab0f9b57c8e0f3c2c554537a274f9fe27020d58ff79de6844878ffc" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "7653d9c750f887f324b20338fbfed0bb", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 2955074, "upload_time": "2019-04-25T09:21:47", "url": "https://files.pythonhosted.org/packages/d8/03/330440ea9556123011fa957d2db893ad15e5c19c5cdc95f185295391f5f3/pyrus_nn-0.2.1-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "2caa3918b90bbb2bf6b8615ab0f44852", "sha256": "9e8333e8cc7a5c47b765c79551a97075c5d1af7fbdc3da0fde0ff1bd149e0932" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "2caa3918b90bbb2bf6b8615ab0f44852", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 488609, "upload_time": "2019-04-25T09:23:31", "url": "https://files.pythonhosted.org/packages/d0/ba/5b28feb149a5a0d22bd9b09942fda15e965566b9fd5b3323fea109152ddf/pyrus_nn-0.2.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "bb86e3f714617a6629b9af2a2bca599e", "sha256": "53320d65328e2ffa5695bdd974bb740c92d8ede8be87707c8420aaacf6c5caad" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "bb86e3f714617a6629b9af2a2bca599e", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 3937737, "upload_time": "2019-04-25T09:21:50", "url": "https://files.pythonhosted.org/packages/12/c7/1267f7d063c5b19d6015d1fe8748751a43abc558a3df15676ab4dca1a181/pyrus_nn-0.2.1-cp37-cp37m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f3661c1f763223d0792aaa9e26dd8f1c", "sha256": "a81181e278190c05dd36fbf5d154f7b6c7b3b9382026273d889a9d299e00bd1d" }, "downloads": -1, "filename": "pyrus_nn-0.2.1-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "f3661c1f763223d0792aaa9e26dd8f1c", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 488513, "upload_time": "2019-04-25T09:23:18", "url": "https://files.pythonhosted.org/packages/fb/79/21157ab4821966f7ab6ed270988e8b6313fcc0676f87a2a12853667e12e3/pyrus_nn-0.2.1-cp37-cp37m-win_amd64.whl" } ] }