{"id":16847357,"url":"https://github.com/koute/sarek","last_synced_at":"2025-07-26T13:34:00.077Z","repository":{"id":57666274,"uuid":"164729577","full_name":"koute/sarek","owner":"koute","description":"A work-in-progress, experimental neural network library for Rust","archived":false,"fork":false,"pushed_at":"2019-04-27T18:08:58.000Z","size":11623,"stargazers_count":44,"open_issues_count":0,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-18T08:48:20.104Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/koute.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-08T20:44:19.000Z","updated_at":"2023-12-17T17:35:54.000Z","dependencies_parsed_at":"2022-09-26T20:31:43.766Z","dependency_job_id":null,"html_url":"https://github.com/koute/sarek","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fsarek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fsarek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fsarek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fsarek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koute","download_url":"https://codeload.github.com/koute/sarek/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244912800,"owners_count":20530764,"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","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":[],"created_at":"2024-10-13T13:07:37.984Z","updated_at":"2025-03-22T05:31:25.503Z","avatar_url":"https://github.com/koute.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://api.travis-ci.org/koute/sarek.svg)](https://travis-ci.org/koute/sarek)\n\n# A work-in-progress, experimental neural network library for Rust\n\n[![Documentation](https://docs.rs/sarek/badge.svg)](https://docs.rs/sarek/*/sarek/)\n\nThe goal of this crate is to provide a Rust neural network library which is simple,\neasy to use, minimal, fast and production ready.\n\n**This is still experimental!** Seriously, I mean it.\n\n## Requirements\n\nCurrently this only works on Rust nightly and requires Python 3.7, TensorFlow 1.13, and Numpy 1.15\n**at runtime** as it's using TensorFlow Keras (through Python!). Might work with older versions;\nno guarantees though.\n\nWarning: TensorFlow 1.12 (and possibly 1.11) has a broken dropout layer; don't use those versions.\n\n## Tentative short-term roadmap\n\n   * [X] Support TensorFlow Keras as a backend (due to how buggy TensorFlow is this is only temporarily the default)\n      * [X] Support basic layer types:\n         * [X] Fully connected\n         * [X] Dropout\n         * [X] Activation\n            * [X] Logistic\n            * [X] TanH\n            * [X] ReLU\n            * [X] LeakyReLU\n            * [X] ELU\n         * [X] Softmax\n         * [X] Convolutional\n         * [X] Max pooling\n         * [X] Add\n         * [X] Mul\n   * [X] Support building sequential models\n   * [X] Support building graph models\n   * [X] Add a MNIST example\n   * [X] Add a CIFAR-10 example\n      * [ ] Train it to a reasonable accuracy\n   * [X] Add LSUV-like weight initialization\n      * [X] Replace the random orthogonal matrix generator with a pure Rust one\n   * [X] Add automatic input normalization (zero mean, unit variance)\n   * [ ] Add a native backend (reimplement the compute parts using pure Rust code)\n      * [ ] Use multiple threads\n      * [ ] Use SIMD\n   * [ ] Make the Python + TensorFlow dependency optional (compile time)\n   * [ ] Add full API documentation and add `#![deny(missing_docs)]`\n\n## Long term roadmap\n\n   * Support more layer types:\n      * [ ] Batch normalization (maybe)\n      * [ ] RNN (maybe)\n   * Add other backends:\n      * [ ] Figure out a compute abstraction:\n         * a) Define a custom Rust-like compute language and a source-level translator\n         * b) Write the compute parts in Rust, compile to WASM and write a recompiler of WASM bytecode\n         * c) Write a SIPR-V recompiler, and write the compute parts in something that can compile to SPIR-V\n      * [ ] OpenCL\n      * [ ] Vulkan\n      * [ ] WebGL (?)\n   * [ ] Export a C API\n   * [ ] Compile to WebAssembly and publish to NPM as a JS library\n\n## I don't know anything about machine learning nor neural networks; what is this *actually* for?\n\nIn a nutshell a neural network is a mathematical construct which can automatically learn how to transform\ndata from one representation into another one. Say, for example, that you have an old black and white photo\nof your grandma, and you'd like to colorize it. A neural network can help you with that!\n\nWhat you would do in such a case is to find a bunch of photos which are already in color and convert them\nto black and white. You've just got yourself a data set for training a neural network! Now you can tell\na neural network - hey, here's a bunch of black and white photos, and here are the same photos but they're\nin color; please learn how to transform the black and white photos into the color ones!\n\nAnd that's what the neural network will do. If properly trained your neural network will learn\nhow to *generalize*, or in other words - it will be able to turn more-or-less *any* black and white\nphoto into a color one, even if it never saw that particular photo before!\n\n## Contributing\n\nIf you want to contribute something significant (especially expose new stuff from TensorFlow)\nplease create an issue first to discuss it. This is not a research-level library, nor it is\nsupposed to be a huge kitchen sink.\n\n## License\n\nLicensed under either of\n\n  * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n  * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoute%2Fsarek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoute%2Fsarek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoute%2Fsarek/lists"}