# DumbNet
A Neural Network library that does not make use of allocations or the standard library at all.
It does all its work on the stack.
This has some advantages:
## Embedded
Embedded devices without any operating system are now able to run at least simple neural
networks.
## Compile-Time checks
Since the whole network layout needs to be known at compile time the dimensions of inputs and
outputs are checked.
## Easy to get started
No need for OpenCL or CUDA, it just runs on your CPU. Or basically any other CPU for that
matter.
## Optimization
The whole network being known to the compiler might enable some optimizations. That said the
library is currently not very well optimized.
Also it was a fun challenge and actually worked out :)
Check the examples directory for some simple networks to get started.
## Plans
- [ ] a convolutional layer would be nice
- [ ] think about the library design, specifically Layer might be too coarse of a trait, sub-layers may be useful.
- [ ] unify SoftMax and other layers
- [ ] better optimization
- [ ] ! move to less horrible generics
- [ ] figure out how to use less type parameters
## 1.0 Statement
This crate will be 1.0 if it has the tools to detect handwriting and is kinda easy to use.
# Contributing
Please symlink the hooks to your local .git/hooks/ directory to run some automatic checks before committing.
ln -s ../../hooks/pre-commit .git/hooks/
Please install rustfmt and cargo-sync-readme so these checks can be run.
rustup component add rustfmt
cargo install cargo-sync-readme
Please execute `cargo-sync-readme` when you change the top-level-documentation.
Please run `cargo fmt` whenever you change code. If possible configure your editor to do so for you.