{"id":31223482,"url":"https://github.com/mathiswellmann/reservoir_computer","last_synced_at":"2025-09-21T22:45:35.732Z","repository":{"id":170436807,"uuid":"468718074","full_name":"MathisWellmann/reservoir_computer","owner":"MathisWellmann","description":"Reservoir Computers on CPU","archived":false,"fork":false,"pushed_at":"2023-07-17T07:11:54.000Z","size":23170,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-12-16T15:16:17.337Z","etag":null,"topics":["ai","linear-regression","ml","nn","recurrent-neural-networks","reservoir","reservoir-computing"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MathisWellmann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-03-11T11:08:55.000Z","updated_at":"2023-05-28T20:27:37.000Z","dependencies_parsed_at":"2023-07-26T02:50:07.583Z","dependency_job_id":null,"html_url":"https://github.com/MathisWellmann/reservoir_computer","commit_stats":{"total_commits":158,"total_committers":1,"mean_commits":158.0,"dds":0.0,"last_synced_commit":"79812a989d2a74a9c664021431858eb6e81a3a3a"},"previous_names":["mathiswellmann/reservoir_computer"],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/MathisWellmann/reservoir_computer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathisWellmann%2Freservoir_computer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathisWellmann%2Freservoir_computer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathisWellmann%2Freservoir_computer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathisWellmann%2Freservoir_computer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MathisWellmann","download_url":"https://codeload.github.com/MathisWellmann/reservoir_computer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathisWellmann%2Freservoir_computer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276319015,"owners_count":25621651,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","linear-regression","ml","nn","recurrent-neural-networks","reservoir","reservoir-computing"],"created_at":"2025-09-21T22:45:33.909Z","updated_at":"2025-09-21T22:45:35.700Z","avatar_url":"https://github.com/MathisWellmann.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reservoir Computers\n:radioactive: This project has been collecting dust for a bit, so making this public for educational purposes, but don't expect much (It's a CPU implementation afterall).\n\n[Reservoir Computers](https://en.wikipedia.org/wiki/Reservoir_computing) \nare a type of recurrent neural network with a fixed internal connection matrix.\nThe only thing being \"trained\" in this paradigm is the readout layer, by fitting a linear regression including regularization.\nThis makes it extremely efficient and powerful for predictive tasks of (chaotic) dynamical systems.\n\nThis crate provides a few reservoir computer implementations in Rust mainly for educational purposes.\nThey all run on CPU and rely on the [`nalgebra`](https://github.com/dimforge/nalgebra) crate for matrix multiplications.\nIt is intended to be a flexible, research oriented library that allows anyone to implement their own spin of RC.\nIt achieves this by making many things generic, so you can just plug and play your own extensions.\nCurrently It only works for 1 dimensional input signals. \nIf you are capable of generalizing this to arbitrary IO dimension, I encourage you to implement is and create a PR.\n\nThis repository contains three concrete reservoir computers:\n- Echo State Network (ESN)\n- Euler State Network (EuSN)\n- Next Generation Reservoir Computer (NGRC)\n- High-efficiency NGRC (HENGRC)\n\nExamples inculde:\n- [doublescroll](/examples/doublescroll)\n- [mackey_glass](/examples/mackey_glass)\n- [sine](/examples/sine)\n\n:warning: The implementation aims to be as close as possible to the theoretical groundwork layed out in many academic papers, however the correctness cannot be guaranteed.\nIts obvious that reservoir computers benefit massively from GPU acceleration due to the heavy use of matmul operations. A GPU variant of each network can be derived fairly easily from the knowledge in this repo. I use [arrayfire-rs](https://github.com/arrayfire/arrayfire-rust) for this acceleration (in separate repo and private for now)\n\n### TODOS:\nWrote this a couple of years ago, so there are some things todo, like:\n- benchmark chaotic dynamical systems\n- implement lyapunov time for analysis purposes\n- Make error measure generic and add MAE as well as RMSE, which already exists\n- Add prediction plot to this README\n\n### Contributions\nIf you find a bug or would like to help out, feel free to create a pull-request.\n\n### Donations :moneybag: :money_with_wings:\nI you would like to support the development of this crate, feel free to send over a donation:\n\nMonero (XMR) address:\n```plain\n47xMvxNKsCKMt2owkDuN1Bci2KMiqGrAFCQFSLijWLs49ua67222Wu3LZryyopDVPYgYmAnYkSZSz9ZW2buaDwdyKTWGwwb\n```\n\n![monero](img_readme/monero_donations_qrcode.png)\n\n### License\nCopyright (C) 2020  \u003cMathis Wellmann wellmannmathis@gmail.com\u003e\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n![GNU AGPLv3](img_readme/agplv3.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathiswellmann%2Freservoir_computer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmathiswellmann%2Freservoir_computer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathiswellmann%2Freservoir_computer/lists"}