{"id":23006345,"url":"https://github.com/bokutotu/zenu","last_synced_at":"2025-04-05T06:07:35.235Z","repository":{"id":225513011,"uuid":"721683666","full_name":"bokutotu/zenu","owner":"bokutotu","description":"A Deep Learning framework with very few dependencies, Written in Rust","archived":false,"fork":false,"pushed_at":"2025-02-14T21:30:51.000Z","size":8517,"stargazers_count":60,"open_issues_count":11,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-04T23:07:16.975Z","etag":null,"topics":["ai","autograd","blas","cublas","cuda","cudnn","deep-learning","deep-neural-networks","gpu-computing","hpc","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bokutotu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-21T15:03:50.000Z","updated_at":"2025-03-19T03:54:06.000Z","dependencies_parsed_at":"2024-05-30T17:19:39.263Z","dependency_job_id":null,"html_url":"https://github.com/bokutotu/zenu","commit_stats":null,"previous_names":["bokutotu/zenu"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokutotu%2Fzenu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokutotu%2Fzenu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokutotu%2Fzenu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokutotu%2Fzenu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bokutotu","download_url":"https://codeload.github.com/bokutotu/zenu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294538,"owners_count":20915340,"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":["ai","autograd","blas","cublas","cuda","cudnn","deep-learning","deep-neural-networks","gpu-computing","hpc","rust"],"created_at":"2024-12-15T08:12:08.685Z","updated_at":"2025-04-05T06:07:35.213Z","avatar_url":"https://github.com/bokutotu.png","language":"Rust","funding_links":[],"categories":["Rust","Neural Networks"],"sub_categories":[],"readme":"\n# ZeNu\n\n**ZeNu** is a high-performance deep learning framework implemented in pure Rust. It features an intuitive API and high extensibility.\n\n## Features\n\n- 🦀 **Pure Rust implementation**: Maximizes safety and performance\n- ⚡ **GPU performance**: Comparable to PyTorch (supports CUDA 12.3 + cuDNN 9)\n- 🔧 **Simple and intuitive API**\n- 📦 **Modular design**: Easy to extend\n\n## Installation\n\nAdd the following to your Cargo.toml:\n\n```toml\n[dependencies]\nzenu = \"0.1\"\n\n# To enable CUDA support:\n[dependencies.zenu]\nversion = \"0.1\"\nfeatures = [\"nvidia\"]\n```\n\n## Supported Features\n\n### Layers\n- Linear\n- Convolution 2D\n- Batch Normalization 2D\n- LSTM\n- RNN\n- GRU\n- MaxPool 2D\n- Dropout\n\n### Optimizers\n- SGD\n- Adam\n- AdamW\n\n### Device Support\n- CPU\n- CUDA (NVIDIA GPU)\n  - CUDA 12.3\n  - cuDNN 9\n\n## Project Structure\n\n```\nzenu/\n├── zenu               # Main library\n├── zenu-autograd      # Automatic differentiation engine\n├── zenu-layer         # Neural network layers\n├── zenu-matrix        # Matrix operations\n├── zenu-optimizer     # Optimization algorithms\n├── zenu-cuda          # CUDA implementation\n└── Other support crates\n```\n\n## Examples\n\nCheck the `examples/` directory for detailed implementations:\n- MNIST classification\n- CIFAR10 classification\n- ResNet implementation\n\n### Simple Usage Example\n\nHere is a simple example of defining and training a model using ZeNu:\n\n```rust\nuse zenu::{\n    dataset::{train_val_split, DataLoader, Dataset},\n    mnist::minist_dataset,\n    update_parameters, Model,\n};\nuse zenu_autograd::{\n    creator::from_vec::from_vec,\n    functions::{activation::sigmoid::sigmoid, loss::cross_entropy::cross_entropy},\n    Variable,\n};\nuse zenu_layer::{layers::linear::Linear, Layer};\nuse zenu_optimizer::sgd::SGD;\n\nstruct SingleLayerModel {\n    linear: Linear\u003cf32\u003e,\n}\n\nimpl SingleLayerModel {\n    fn new() -\u003e Self {\n        let mut linear = Linear::new(784, 10);\n        linear.init_parameters(None);\n        Self { linear }\n    }\n}\n\nimpl Model\u003cf32\u003e for SingleLayerModel {\n    fn predict(\u0026self, inputs: \u0026[Variable\u003cf32\u003e]) -\u003e Variable\u003cf32\u003e {\n        let x = \u0026inputs[0];\n        let x = self.linear.call(x.clone());\n        sigmoid(x)\n    }\n}\n\nfn main() {\n    let (train, test) = minist_dataset().unwrap();\n    let (train, val) = train_val_split(\u0026train, 0.8, true);\n\n    let test_dataloader = DataLoader::new(MnistDataset { data: test }, 1);\n\n    let sgd = SGD::new(0.01);\n    let model = SingleLayerModel::new();\n\n    for epoch in 0..10 {\n        let mut train_dataloader = DataLoader::new(\n            MnistDataset {\n                data: train.clone(),\n            },\n            16,\n        );\n        let val_dataloader = DataLoader::new(MnistDataset { data: val.clone() }, 16);\n\n        train_dataloader.shuffle();\n\n        let mut epoch_loss_train: f32 = 0.;\n        let mut num_iter_train = 0;\n        for batch in train_dataloader {\n            let input = batch[0].clone();\n            let target = batch[1].clone();\n            let y_pred = model.predict(\u0026[input]);\n            let loss = cross_entropy(y_pred, target);\n            update_parameters(loss.clone(), \u0026sgd);\n            epoch_loss_train += loss.get_data().index_item([]);\n            num_iter_train += 1;\n        }\n\n        let mut epoch_loss_val = 0.;\n        let mut num_iter_val = 0;\n        for batch in val_dataloader {\n            let input = batch[0].clone();\n            let target = batch[1].clone();\n            let y_pred = model.predict(\u0026[input]);\n            let loss = cross_entropy(y_pred, target);\n            epoch_loss_val += loss.get_data().index_item([]);\n            num_iter_val += 1;\n        }\n\n        println!(\n            \"Epoch: {}, Train Loss: {}, Val Loss: {}\",\n            epoch,\n            epoch_loss_train / num_iter_train as f32,\n            epoch_loss_val / num_iter_val as f32\n        );\n    }\n\n    let mut test_loss = 0.;\n    let mut num_iter_test = 0;\n    let mut correct = 0;\n    let mut total = 0;\n    for batch in test_dataloader {\n        let input = batch[0].clone();\n        let target = batch[1].clone();\n        let y_pred = model.predict(\u0026[input]);\n        let loss = cross_entropy(y_pred.clone(), target.clone());\n        test_loss += loss.get_data().index_item([]);\n        num_iter_test += 1;\n        let y_pred = y_pred.get_data();\n        let max_idx = y_pred.to_view().max_idx()[0];\n        let target = target.get_data();\n        let target = target.to_view().max_idx()[0];\n        if max_idx == target {\n            correct += 1;\n        }\n        total += 1;\n    }\n\n    println!(\"Accuracy: {}\", correct as f32 / total as f32);\n    println!(\"Test Loss: {}\", test_loss / num_iter_test as f32);\n}\n```\n\n## Contributing\n\nContributions to ZeNu are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the [GitHub repository](https://github.com/bokutotu/zenu).\n\n## License\n\nZeNu is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbokutotu%2Fzenu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbokutotu%2Fzenu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbokutotu%2Fzenu/lists"}