Skip to main content

entrenar/train/trainer/
mod.rs

1//! Trainer abstraction for training loops
2//!
3//! This module provides a high-level `Trainer` that orchestrates the training loop,
4//! including:
5//! - Single training steps
6//! - Epoch-level training
7//! - Multi-epoch training with callbacks
8//! - Validation
9//! - Gradient accumulation
10//!
11//! # Example
12//!
13//! ```no_run
14//! use entrenar::train::{Trainer, TrainConfig, Batch, MSELoss, EarlyStopping};
15//! use entrenar::optim::Adam;
16//! use entrenar::Tensor;
17//!
18//! // Setup
19//! let params = vec![Tensor::zeros(10, true)];
20//! let optimizer = Adam::new(0.001, 0.9, 0.999, 1e-8);
21//! let config = TrainConfig::default();
22//!
23//! let mut trainer = Trainer::new(params, Box::new(optimizer), config);
24//! trainer.set_loss(Box::new(MSELoss));
25//! trainer.add_callback(EarlyStopping::new(5, 0.001));
26//!
27//! // Training with callbacks
28//! // let result = trainer.train(10, || batches.clone(), |x| x.clone());
29//! ```
30
31#![allow(clippy::field_reassign_with_default)]
32
33mod core;
34mod epoch;
35mod result;
36mod step;
37mod train_loop;
38
39pub use core::Trainer;
40pub use result::TrainResult;