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