sklears_neural/
lib.rs

1#![allow(missing_docs)]
2//! Neural network implementations for the sklears machine learning library.
3//!
4//! This crate provides implementations of neural network algorithms compatible with
5//! the scikit-learn API, including Multi-Layer Perceptron (MLP) for classification
6//! and regression tasks.
7//!
8//! # Examples
9//!
10//! ```rust,ignore
11//! use sklears_neural::{MLPClassifier, Activation};
12//! use sklears_core::traits::{Predict};
13//! use scirs2_core::ndarray::Array2;
14//!
15//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
16//! let x = Array2::from_shape_vec((4, 2), vec![
17//!     0.0, 0.0,
18//!     0.0, 1.0,
19//!     1.0, 0.0,
20//!     1.0, 1.0,
21//! ])?;
22//! let y = vec![0, 1, 1, 0]; // XOR problem
23//!
24//! let mlp = MLPClassifier::new()
25//!     .hidden_layer_sizes(&[10, 5])
26//!     .activation(Activation::Relu)
27//!     .max_iter(1000)
28//!     .learning_rate_init(0.01)
29//!     .random_state(42);
30//!
31//! let trained_mlp = mlp.fit(&x, &y)?;
32//! let predictions = trained_mlp.predict(&x)?;
33//! # Ok(())
34//! # }
35//! ```
36
37// Allow common patterns in machine learning code and research environments
38#![allow(non_snake_case)] // Allow X, Y variable names common in ML
39#![allow(unused_imports)] // Allow unused imports for conditional compilation
40#![allow(unused_variables)] // Allow unused variables in development/research code
41#![allow(dead_code)] // Allow dead code during development
42#![allow(deprecated)] // Allow deprecated items during transitions
43#![allow(unexpected_cfgs)] // Allow GPU and other conditional compilation features
44#![allow(ambiguous_glob_reexports)]
45// Allow re-export conflicts in ML modules
46
47// Clippy lints that are overly strict for ML/research code
48#![allow(clippy::too_many_arguments)] // Neural networks often have many parameters
49#![allow(clippy::type_complexity)] // Complex types are common in ML
50#![allow(clippy::multiple_bound_locations)] // Common in generic ML code
51#![allow(clippy::assign_op_pattern)] // Allow manual assignment patterns for clarity
52#![allow(clippy::nonminimal_bool)] // Allow explicit boolean expressions
53#![allow(clippy::derivable_impls)] // Allow manual Default implementations for clarity
54#![allow(clippy::redundant_field_names)] // Allow redundant field names for clarity
55#![allow(clippy::needless_update)] // Allow needless struct updates for consistency
56#![allow(clippy::match_same_arms)] // Allow same arms in match for completeness
57#![allow(clippy::single_match)] // Allow single match expressions
58#![allow(clippy::large_enum_variant)] // Allow large enum variants in ML structures
59#![allow(clippy::module_inception)] // Allow module inception patterns
60#![allow(clippy::new_without_default)] // Allow new without Default for ML types
61#![allow(clippy::empty_line_after_doc_comments)] // Allow formatting flexibility
62#![allow(clippy::should_implement_trait)] // Allow custom implementations for ML types
63#![allow(clippy::clone_on_copy)] // Allow explicit cloning for code clarity
64#![allow(clippy::collapsible_else_if)] // Allow explicit conditional structure
65#![allow(clippy::if_same_then_else)] // Allow explicit branching in ML code
66#![allow(clippy::ptr_arg)] // Allow Vec parameters for ML data structures
67#![allow(clippy::option_as_ref_deref)] // Allow explicit Option handling
68#![allow(clippy::manual_is_multiple_of)] // Allow manual modulo operations
69#![allow(clippy::enum_variant_names)] // Allow descriptive enum variant names
70#![allow(clippy::field_reassign_with_default)] // Allow explicit field assignment
71#![allow(unused_mut)] // Allow unused mutable variables in research code
72#![allow(unused_assignments)] // Allow unused assignments for completeness
73#![allow(clippy::unwrap_or_default)] // Allow explicit unwrap_or patterns
74#![allow(clippy::wrong_self_convention)] // Allow custom method naming
75#![allow(clippy::needless_borrows_for_generic_args)] // Allow explicit borrows
76#![allow(clippy::useless_asref)] // Allow explicit as_ref usage
77#![allow(clippy::borrow_deref_ref)] // Allow explicit reference patterns
78#![allow(clippy::op_ref)] // Allow reference operations for clarity
79#![allow(clippy::needless_borrow)] // Allow explicit borrowing for clarity
80
81pub mod activation;
82pub mod attention_rnn;
83pub mod autoencoder;
84pub mod checkpointing;
85pub mod config;
86pub mod conv_layers;
87pub mod curriculum;
88pub mod data_augmentation;
89pub mod distributed;
90pub mod experiment_tracking;
91pub mod gan;
92pub mod gpu;
93pub mod gradient_checking;
94pub mod interpretation;
95pub mod knowledge_distillation;
96pub mod layers;
97pub mod memory_leak_tests;
98pub mod mlp_classifier;
99pub mod mlp_regressor;
100pub mod model_selection;
101pub mod models;
102pub mod multi_task;
103pub mod neural_metrics;
104pub mod performance_testing;
105pub mod quantization;
106pub mod rbm;
107pub mod regularization;
108pub mod self_supervised;
109pub mod seq2seq;
110pub mod solvers;
111pub mod transfer_learning;
112pub mod transformer;
113pub mod utils;
114pub mod vae;
115pub mod validation;
116pub mod versioning;
117pub mod visualization;
118pub mod weight_init;
119
120pub use activation::*;
121pub use attention_rnn::*;
122pub use autoencoder::*;
123pub use checkpointing::*;
124pub use config::*;
125pub use conv_layers::*;
126pub use curriculum::*;
127pub use data_augmentation::*;
128pub use distributed::*;
129pub use experiment_tracking::*;
130pub use gan::*;
131pub use gpu::*;
132pub use gradient_checking::*;
133pub use interpretation::*;
134pub use knowledge_distillation::*;
135pub use layers::*;
136pub use memory_leak_tests::*;
137pub use mlp_classifier::*;
138pub use mlp_regressor::*;
139pub use model_selection::*;
140pub use models::*;
141pub use multi_task::*;
142pub use neural_metrics::*;
143pub use performance_testing::*;
144pub use quantization::*;
145pub use rbm::*;
146pub use regularization::*;
147pub use self_supervised::*;
148pub use seq2seq::*;
149pub use solvers::*;
150pub use transfer_learning::*;
151pub use transformer::*;
152pub use utils::*;
153pub use vae::*;
154pub use validation::*;
155pub use versioning::*;
156pub use visualization::*;
157pub use weight_init::*;
158
159#[allow(non_snake_case)]
160#[cfg(test)]
161mod test_simple;
162
163#[allow(non_snake_case)]
164#[cfg(test)]
165mod advanced_property_tests;
166
167use sklears_core::error::SklearsError;
168
169/// Result type for neural network operations
170pub type NeuralResult<T> = Result<T, SklearsError>;