Skip to main content

microcnn/
lib.rs

1//! A minimal CNN framework in Rust with INT8 and INT4 quantization support.
2//!
3//! This crate provides building blocks for constructing and running convolutional neural
4//! networks in FP32, INT8, and INT4 precision. It includes a reference LeNet-5 implementation
5//! for MNIST digit classification.
6//!
7//! # Example
8//!
9//! ```no_run
10//! use microcnn::lenet::lenet;
11//!
12//! let mut net = lenet(false);
13//! net.load("data/lenet.raw");
14//! ```
15
16/// FP32, INT8, and INT4 tensors.
17pub mod tensor;
18/// Re-export tensor types at legacy paths.
19pub use tensor::TensorI8;
20pub use tensor::TensorI4;
21/// Alias modules so `crate::tensor_i8::TensorI8` etc. still resolve.
22pub mod tensor_i8 {
23    pub use crate::tensor::TensorI8;
24}
25pub mod tensor_i4 {
26    pub use crate::tensor::TensorI4;
27}
28
29/// Quantization utilities and model architecture (LeNet).
30pub mod arc;
31/// Re-export at legacy paths.
32pub mod quantization {
33    pub use crate::arc::QuantParams;
34    pub use crate::arc::Calibrator;
35    pub use crate::arc::quantize_tensor_symmetric;
36    pub use crate::arc::quantize_tensor_asymmetric;
37    pub use crate::arc::dequantize_tensor;
38    pub use crate::arc::quantize_tensor_symmetric_i4;
39    pub use crate::arc::quantize_tensor_asymmetric_i4;
40    pub use crate::arc::dequantize_tensor_i4;
41}
42pub mod lenet {
43    pub use crate::arc::lenet;
44    pub use crate::arc::lenet_with_algorithm;
45    pub use crate::arc::lenet_quantized;
46    pub use crate::arc::lenet_quantized_i4;
47}
48
49/// Neural network layers and network types (FP32, INT8, INT4).
50pub mod network;
51
52/// MNIST dataset loaders.
53pub mod loader;
54pub mod mnist {
55    pub use crate::loader::MNIST;
56    pub use crate::loader::MNISTLabels;
57}
58
59/// Convolution algorithm implementations (Naive, Im2col, Winograd, FFT).
60pub mod conv;
61
62/// Benchmarking utilities for comparing FP32/INT8/INT4 performance.
63pub mod metrics;
64pub mod benchmark {
65    pub use crate::metrics::*;
66}