concision_core/
lib.rs

1/*
2    Appellation: concision-core <library>
3    Contrib: @FL03
4*/
5//! # concision-core
6//!
7//! This library provides the core abstractions and utilities for the concision (cnc) machine
8//! learning framework.
9//!
10//! ## Features
11//!
12//! - [`ParamsBase`]: A structure for defining the parameters within a neural network.
13//! - [`Backward`]: This trait establishes a common interface for backward propagation.
14//! - [`Forward`]: This trait denotes a single forward pass through a layer of a neural network
15//!
16#![allow(
17    clippy::module_inception,
18    clippy::needless_doctest_main,
19    clippy::upper_case_acronyms
20)]
21#![cfg_attr(not(feature = "std"), no_std)]
22#![crate_type = "lib"]
23
24#[cfg(feature = "alloc")]
25extern crate alloc;
26
27#[cfg(feature = "rand")]
28#[doc(no_inline)]
29pub use rand;
30#[cfg(feature = "rand")]
31#[doc(no_inline)]
32pub use rand_distr;
33
34#[doc(inline)]
35pub use concision_utils as utils;
36
37#[doc(inline)]
38pub use self::{
39    activate::prelude::*, error::*, loss::prelude::*, ops::prelude::*, params::prelude::*,
40    traits::prelude::*, utils::prelude::*,
41};
42
43#[macro_use]
44pub(crate) mod macros {
45    #[macro_use]
46    pub mod seal;
47}
48/// this module is dedicated to activation function
49pub mod activate;
50/// this module provides the base [`Error`] type for the library
51pub mod error;
52/// this module establishes generic random initialization routines for models, params, and
53/// tensors.
54pub mod init;
55/// this module focuses on the loss functions used in training neural networks.
56pub mod loss;
57/// this module provides the [`ParamsBase`] type for the library, which is used to define the
58/// parameters of a neural network.
59pub mod params;
60
61pub mod ops {
62    //! This module provides the core operations for tensors, including filling, padding,
63    //! reshaping, and tensor manipulation.
64    #[doc(inline)]
65    pub use self::prelude::*;
66
67    pub mod fill;
68    pub mod pad;
69    pub mod reshape;
70    pub mod tensor;
71
72    pub(crate) mod prelude {
73        #[doc(inline)]
74        pub use super::fill::*;
75        #[doc(inline)]
76        pub use super::pad::*;
77        #[doc(inline)]
78        pub use super::reshape::*;
79        #[doc(inline)]
80        pub use super::tensor::*;
81    }
82}
83pub mod traits {
84    //! This module provides the core traits for the library, such as  [`Backward`] and
85    //! [`Forward`]
86    #[doc(inline)]
87    pub use self::prelude::*;
88
89    pub mod apply;
90    pub mod clip;
91    pub mod codex;
92    pub mod gradient;
93    pub mod init;
94    pub mod like;
95    pub mod mask;
96    pub mod norm;
97    pub mod propagation;
98    pub mod scalar;
99    pub mod tensor;
100    pub mod wnb;
101
102    pub(crate) mod prelude {
103        #[doc(inline)]
104        pub use super::apply::*;
105        #[doc(inline)]
106        pub use super::clip::*;
107        #[doc(inline)]
108        pub use super::codex::*;
109        #[doc(inline)]
110        pub use super::gradient::*;
111        #[doc(inline)]
112        pub use super::init::*;
113        #[doc(inline)]
114        pub use super::like::*;
115        #[doc(inline)]
116        pub use super::mask::*;
117        #[doc(inline)]
118        pub use super::norm::*;
119        #[doc(inline)]
120        pub use super::propagation::*;
121        #[doc(inline)]
122        pub use super::scalar::*;
123        #[doc(inline)]
124        pub use super::tensor::*;
125        #[doc(inline)]
126        pub use super::wnb::*;
127    }
128}
129
130pub mod prelude {
131    #[doc(no_inline)]
132    pub use crate::activate::prelude::*;
133    #[doc(no_inline)]
134    pub use crate::error::*;
135    #[cfg(feature = "rand")]
136    #[doc(no_inline)]
137    pub use crate::init::prelude::*;
138    #[doc(no_inline)]
139    pub use crate::loss::prelude::*;
140    #[doc(no_inline)]
141    pub use crate::ops::prelude::*;
142    #[doc(no_inline)]
143    pub use crate::params::prelude::*;
144    #[doc(no_inline)]
145    pub use crate::traits::prelude::*;
146    #[doc(no_inline)]
147    pub use concision_utils::prelude::*;
148}