|
| 1 | +--- |
| 2 | +date: '2025-11-04T12:00:00+09:00' |
| 3 | +draft: false |
| 4 | +title: 'RC bootcamp' |
| 5 | +toc: true |
| 6 | +tocopen: false |
| 7 | +UseHugoToc: false |
| 8 | +--- |
| 9 | + |
| 10 | +{{< picture "/images/banner_light.webp" "/images/banner_dark.webp" >}} |
| 11 | + |
| 12 | +{{< center >}} |
| 13 | +[](http://doi.org/10.1063/5.0283386) |
| 14 | + |
| 15 | + |
| 16 | +{{< /center >}} |
| 17 | + |
| 18 | +## Overview |
| 19 | +**RC bootcamp** is a hands‑on resource for beginners in reservoir computing (RC). |
| 20 | +It walks through core concepts and practical methods of RC across a series of chapters. |
| 21 | +The content aims to help newcomers get practical skills quickly while also covering current research topics. |
| 22 | +The platform supports multiple languages and currently offers English and Japanese editions. |
| 23 | +This page presents the English edition. |
| 24 | + |
| 25 | +{{< toc >}} |
| 26 | + |
| 27 | +## Practical exercises with Jupyter Notebooks |
| 28 | +Each chapter is provided as a [Jupyter Notebook](https://jupyter.org/). |
| 29 | +Exercises require implementing core parts rather than only running example code. |
| 30 | +This format promotes conceptual understanding and practical coding skills. |
| 31 | +All exercises use a consistent format: fill in missing code to reinforce learning. |
| 32 | +For example, a task asking you to implement a function that multiplies its input by six shows the missing code as `...`, as in the example below. |
| 33 | + |
| 34 | +```py |
| 35 | +def solution(val): |
| 36 | + val = ... # TODO Multiply `val` by 6. |
| 37 | + return val |
| 38 | +``` |
| 39 | +There are two exercise types: fill only the right-hand side of an expression or implement the full expression. |
| 40 | +Validate your implementation using the `test_func` helper. |
| 41 | + |
| 42 | +```py |
| 43 | +test_func(solution, "**_**") # Replace ** with the relevant exercise number. |
| 44 | +``` |
| 45 | + |
| 46 | +If you cannot solve an exercise, use `show_solution` to reveal the answer. |
| 47 | +```py |
| 48 | +show_solution("**_**") # Replace ** with the relevant exercise number. |
| 49 | +``` |
| 50 | + |
| 51 | +RC bootcamp supports execution on Google Colaboratory (Colab) and on local machines. |
| 52 | +For local use, we recommend [`uv`](https://docs.astral.sh/uv/) and [`VSCode`](https://code.visualstudio.com/). |
| 53 | +Some chapters cannot run on Colab; see the [Setup for local environment](#setup-for-local-environment) section below for installation and execution instructions. |
| 54 | + |
| 55 | +## Contents of each chapter |
| 56 | +Each chapter has two editions: exercise notebooks with `...` placeholders and solution notebooks with complete implementations. |
| 57 | +Use the solution edition to quickly verify results. |
| 58 | +Use the exercise edition to deepen understanding by implementing the missing code. |
| 59 | + |
| 60 | +### I. Python / NumPy basics |
| 61 | +Chapters 1 and 2 cover the [**Python**](https://www.python.org/) and [**NumPy**](https://numpy.org/) fundamentals needed for RC. |
| 62 | +Python is used throughout the bootcamp. |
| 63 | +Chapter 1 introduces core programming and computer‑science concepts, including syntax and basic algorithms. |
| 64 | +Chapter 2 covers NumPy, the main library for efficient array-based numerical computation in Python, and explains common usage and techniques. |
| 65 | +These chapters target readers with limited programming experience. |
| 66 | +Skip them if you are already comfortable with Python and NumPy. |
| 67 | + |
| 68 | +| | |Exercise|Solution| |
| 69 | +|---|---|:---:|:---:| |
| 70 | +| 01 | Python basics | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/01_python_basics.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/01_python_basics.ipynb) | |
| 71 | +| 02 | NumPy basics | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/02_numpy_basics.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/02_numpy_basics.ipynb) | |
| 72 | + |
| 73 | +### II. Basics of RC |
| 74 | +Chapters 3–8 cover core concepts and practical methods of RC. |
| 75 | +Chapter 3 walks you through implementing an **echo state network (ESN)** to explain RC's basic mechanism. |
| 76 | +Chapter 4 explains practical approaches to **hyperparameter tuning** commonly used in RC. |
| 77 | +Chapter 5 introduces key concepts and analysis methods from **nonlinear dynamical-systems theory** and uses dynamical analysis to evaluate reservoirs. |
| 78 | +Chapter 6 shows how to evaluate reservoir memory by implementing **memory capacity (MC)**. |
| 79 | +Chapter 7 presents **information processing capacity (IPC)**, an extension of MC that provides a broader measure of a reservoir’s information-processing ability. |
| 80 | +Chapter 8 covers **closed‑loop control**, where the reservoir output is fed back into its input for control tasks. |
| 81 | + |
| 82 | +Note: the latter part of Chapter 7 includes compute‑intensive steps that may run very slowly on CPUs. |
| 83 | +In Colab, enable a GPU runtime (Change runtime type) to accelerate execution. |
| 84 | +Colab offers limited free GPU time. |
| 85 | + |
| 86 | +| | |Exercise|Solution| |
| 87 | +|---|---|:---:|:---:| |
| 88 | +| 03 | ESN basics | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/03_esn_basics.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/03_esn_basics.ipynb) | |
| 89 | +| 04 | ESN fine tuning | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/04_esn_fine_tuning.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/04_esn_fine_tuning.ipynb) | |
| 90 | +| 05 | ESN dynamics | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/05_esn_dynamics.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/05_esn_dynamics.ipynb) | |
| 91 | +| 06 | memory capacity | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/06_memory_capacity.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/06_memory_capacity.ipynb) | |
| 92 | +| 07 | information processing capacity | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/07_information_processing_capacity.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/07_information_processing_capacity.ipynb) | |
| 93 | +| 08 | closed loop control | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/08_closed_loop_control.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/08_closed_loop_control.ipynb) | |
| 94 | + |
| 95 | +### III. More advanced topics |
| 96 | +The remaining chapters cover advanced RC research topics in RC. |
| 97 | +Chapter 9 explains how to train internal reservoir connections, including ESNs, and implements **innate training** to control high‑dimensional chaotic trajectories. |
| 98 | +Chapter 10 implements **bifurcation embedding**, which leverages bifurcation phenomena to learn a teacher system's structure from limited data. |
| 99 | +Chapter 11 implements a **state space model (SSM)**, a class of recurrent models noted for long-term memory capabilities. |
| 100 | + |
| 101 | +Note: Chapter 9 does not fully run on Colab. |
| 102 | +Please follow [the local execution instructions below](#setup-for-local-environment) and run this chapter locally. |
| 103 | + |
| 104 | +Also note that Chapter 11, like Chapter 7, contains computationally intensive steps that are slow without a GPU. |
| 105 | +If you run it on Colab, enable a GPU runtime (change it via "Change runtime type" in the top-right) to speed up execution. |
| 106 | + |
| 107 | +| | |Exercise|Solution| |
| 108 | +|---|---|:---:|:---:| |
| 109 | +| 09 | internal optimization | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/09_internal_optimization.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/09_internal_optimization.ipynb) | |
| 110 | +| 10 | bifurcation embedding | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/10_bifurcation_embedding.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/10_bifurcation_embedding.ipynb) | |
| 111 | +| 11 | state space model | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en/11_state_space_model.ipynb) | [](https://colab.research.google.com/github/rc-bootcamp/rc-bootcamp/blob/en_sol/11_state_space_model.ipynb) | |
| 112 | + |
| 113 | +## Setup for local environment |
| 114 | +RC bootcamp can be run locally. |
| 115 | +For research or development we recommend setting up a local environment, e.g., using [`uv`](https://docs.astral.sh/uv/) and [`VSCode`](https://code.visualstudio.com/). |
| 116 | +Download the zip archive from the links below and follow the included instructions to set up the environment. |
| 117 | +- [Download zip archive from GitHub (exercise edition)](https://github.com/rc-bootcamp/rc-bootcamp/archive/refs/heads/en.zip) |
| 118 | +- [Download zip archive from GitHub (solution edition)](https://github.com/rc-bootcamp/rc-bootcamp/archive/refs/heads/en_sol.zip) |
| 119 | + |
| 120 | +`README` is also available in the repository: https://github.com/rc-bootcamp/rc-bootcamp/blob/en/README.md |
| 121 | + |
| 122 | +## License |
| 123 | +RC bootcamp is released under the [MIT License](https://opensource.org/licenses/MIT). |
| 124 | +You are free to use, modify, and redistribute the material. |
| 125 | +Please include the copyright notice and this permission notice in all copies or substantial portions of the software. |
| 126 | + |
| 127 | +## Contributing |
| 128 | +We welcome contributions from the community to improve RC bootcamp. |
| 129 | + |
| 130 | +### Reporting issues |
| 131 | +If you find any issues or have suggestions for improvement, please report them on the [GitHub Issues page](https://github.com/rc-bootcamp/rc-bootcamp/issues). |
| 132 | + |
| 133 | +### Contributing code |
| 134 | +If you would like to contribute, please fork the repository, make your changes, and submit a pull request on GitHub. |
| 135 | +Before contributing, please read the [developer README](https://github.com/rc-bootcamp/rc-bootcamp/blob/main/README.md) and [contribution guidelines](https://github.com/rc-bootcamp/rc-bootcamp/blob/main/CONTRIBUTING.md) and follow the coding style used in the existing codebase. |
| 136 | +Maintainers will review PRs, give feedback, and approve, decline, or request changes. |
| 137 | + |
| 138 | +### Citation |
| 139 | +If you use RC bootcamp in your research or publications, please cite the following paper. |
| 140 | + |
| 141 | +```bibtex |
| 142 | +@article{inoue2025rcbootcamp, |
| 143 | + title = {Reservoir computing bootcamp---from Python/NumPy tutorial for the complete beginners to cutting-edge research topics of reservoir computing}, |
| 144 | + author = {Inoue, Katsuma and Kubota, Tomoyuki and Tran, Quoc Hoan and Akashi, Nozomi and Terajima, Ryo and Kabayama, Tempei and Guan, JingChuan and Nakajima, Kohei}, |
| 145 | + year = 2025, |
| 146 | + month = XX, |
| 147 | + journal = {XX}, |
| 148 | + volume = {XX}, |
| 149 | + number = {X}, |
| 150 | + pages = {XXXXXX}, |
| 151 | + issn = {XXXX-XXXX}, |
| 152 | + doi = {10.1063/5.0283386} |
| 153 | +} |
| 154 | +``` |
| 155 | + |
| 156 | +## Contact |
| 157 | +For questions or feedback about RC bootcamp, please email `k-inoue[at]isi.imi.i.u-tokyo.ac.jp`. |
0 commit comments