concision_init/
lib.rs

1/*
2    Appellation: concision-init <library>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5//! # concision-init
6//!
7//! This library provides various random distribution and initialization routines for the
8//! `concision` framework. It includes implementations for different initialization strategies
9//! optimized for neural networks, such as Glorot (Xavier) initialization, LeCun
10//! initialization, etc.
11//!
12#![allow(
13    clippy::missing_safety_doc,
14    clippy::module_inception,
15    clippy::needless_doctest_main,
16    clippy::should_implement_trait,
17    clippy::upper_case_acronyms
18)]
19#![cfg_attr(not(feature = "std"), no_std)]
20
21#[doc(inline)]
22#[cfg(feature = "rand")]
23pub use self::{distr::prelude::*, utils::*};
24#[doc(inline)]
25pub use self::{error::*, traits::*};
26
27#[cfg(feature = "alloc")]
28extern crate alloc;
29
30#[cfg(feature = "rand")]
31#[doc(no_inline)]
32pub use rand;
33#[cfg(feature = "rand")]
34#[doc(no_inline)]
35pub use rand_distr;
36
37pub mod error;
38
39pub(crate) mod utils {
40    //! this module provides various utility functions for random initialization.
41    #[doc(inline)]
42    #[cfg(feature = "rand")]
43    pub use self::prelude::*;
44
45    #[cfg(feature = "rand")]
46    mod rand_utils;
47
48    mod prelude {
49        #[cfg(feature = "rand")]
50        pub use super::rand_utils::*;
51    }
52}
53
54mod traits {
55    #[doc(inline)]
56    pub use self::prelude::*;
57
58    mod init;
59    #[cfg(feature = "rand")]
60    mod initialize;
61
62    mod prelude {
63        #[doc(inline)]
64        pub use super::init::*;
65        #[doc(inline)]
66        #[cfg(feature = "rand")]
67        pub use super::initialize::*;
68    }
69}
70
71#[cfg(feature = "rand")]
72pub mod distr {
73    //! this module implements various random distributions optimized for neural network
74    //! initialization.
75    #[doc(inline)]
76    pub use self::prelude::*;
77
78    pub mod lecun;
79    pub mod trunc;
80    pub mod xavier;
81
82    pub(crate) mod prelude {
83        #[doc(inline)]
84        pub use super::lecun::*;
85        #[doc(inline)]
86        pub use super::trunc::*;
87        #[doc(inline)]
88        pub use super::xavier::*;
89    }
90}
91
92#[doc(hidden)]
93pub mod prelude {
94    #[cfg(feature = "rand")]
95    pub use super::distr::prelude::*;
96    pub use super::traits::*;
97    #[cfg(feature = "rand")]
98    pub use super::utils::*;
99}