Building core Deep Learning algorithms in Rust.

It's kinda like the middle child of [karpathy/micrograd](https://github.com/karpathy/micrograd) and [geohot/tinygrad](https://github.com/geohot/tinygrad).

---

### Contributing

Any type of contribution is welcome as long as it adds value! i.e

- Bug fixes followed with tests to ensure the bug never resurfaces
- Increasing code readability, or run-time/memory efficiency

---

### Installation

To install our framework to use in a project you can tell cargo where to find it using the following:
```
[dependencies]
micrograd_rs = { git = "https://github.com/LazaroHurtado/micrograd-rs.git" }
```

To run and test this framework's source code you must first ensure you have Rust installed, if not it can be installed with the following:
`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`

Then, assuming `git` is already installed, clone the repo with:
`git clone https://github.com/LazaroHurtado/micrograd-rs.git`

Now you will be able to run tests, `cargo test`, and example files `cargo run --example feedforward_nn`.

---

### File structure

`/example`: Where you can find example Rust projects that uses our framework to create a ML model
`/tests`: Tests files for ensuring features and framework logic is working properly
`/src/activations`: Activation functions
`/src/criterions`: Loss functions
`/src/layers`: Model layers like `Linear` and `Convolution`
`/src/lr_schedulers`: Learning rate lr_schedulers
`/src/ops`: Operations that can be performed on the `Value` struct and act as nodes in the auto-differentiation graph
`/src/optimizers`: Model optimizer functions
`/src/utils/weights_init`: Weight initializers functions