Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neuronika/neuronika
Tensors and dynamic neural networks in pure Rust.
https://github.com/neuronika/neuronika
autodifferentiation deeplearning neural-networks rust rust-sci
Last synced: about 1 month ago
JSON representation
Tensors and dynamic neural networks in pure Rust.
- Host: GitHub
- URL: https://github.com/neuronika/neuronika
- Owner: neuronika
- License: apache-2.0
- Created: 2021-02-13T17:04:39.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-10-10T07:02:35.000Z (about 2 years ago)
- Last Synced: 2024-10-02T01:06:25.630Z (about 2 months ago)
- Topics: autodifferentiation, deeplearning, neural-networks, rust, rust-sci
- Language: Rust
- Homepage: https://docs.rs/neuronika
- Size: 55.8 MB
- Stars: 1,050
- Watchers: 27
- Forks: 54
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- StarryDivineSky - neuronika/neuronika
README
Neuronika is a machine learning framework written in pure Rust, built with a focus on ease of
use, fast prototyping and performance.## Add neuronika to your project
```toml
[dependencies]neuronika = { git = "https://github.com/neuronika/neuronika" }
```## Dynamic neural networks and auto-differentiation
At the core of Neuronika lies a mechanism *called reverse-mode automatic differentiation*, that allows you to define dynamically changing neural networks with very low effort and no overhead by using a lean, fully imperative and define by run API.
![](./misc/neuronika_ad.gif)
## The power of Rust
The Rust language allows for an intuitive, light and easy to use interface while achieving incredible performance.
There's no need for a FFI, everything happens in front of your eyes.## Crate Feature Flags
* `cuda` Enables gpu accelerated primitives.
You can use the following crate feature flags to configure the [`ndarray`] backend:
* `serialize` Enables serialization support for [`serde`] 1.x.
* `blas` Enables transparent [BLAS] support for matrix multiplication, which uses `blas-src` for pluggable backend and needs to be configured separately. See [here] for more informations.
* `matrixmultiply-threading` Enables the `threading` feature in the [`matrixmultiply`] package.
[`ndarray`]: https://github.com/rust-ndarray/ndarray
[`serde`]: https://github.com/serde-rs/serde
[BLAS]: https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms
[here]: https://github.com/rust-ndarray/ndarray#how-to-enable-blas-integration
[`matrixmultiply`]: https://github.com/bluss/matrixmultiply## Contributing
We appreciate and welcome all contributions. If you are planning to contribute back bug-fixes, please do so without any further discussion.
If you plan to contribute new features, utility functions, or extensions to the framework, please first open a discussion and discuss the feature with us. Sending a PR without discussion might end up resulting in a rejected PR because we might be taking the project in a different direction than you might be aware of.
To learn more about making a contribution to Neuronika, please see our [contribution page](CONTRIBUTING.md).
## Getting Help
First, see if the answer to your question can be found in the [API documentation](https://docs.rs/neuronika). If the answer
is not there, please ask for help by opening a [discussion](https://github.com/neuronika/neuronika/discussions) with the question. We'll be glad to help you.## Project Status
Neuronika is very young and rapidly evolving, we are continuously developing the project and breaking changes are expected during transitions from version to version. We adopt the newest stable Rust's features if we need them.
## License
Dual-licensed to be compatible with the Rust project.
Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) or the [MIT license](http://opensource.org/licenses/MIT), at your option. This file may not be copied, modified, or distributed except according to those terms.