use nove_tensor::TensorError;
use thiserror::Error;
mod sgd;
pub use sgd::Sgd;
#[derive(Debug, Error)]
pub enum OptimizerError {
#[error(transparent)]
TensorError(#[from] TensorError),
#[error("{0}")]
OtherError(String),
}
pub trait Optimizer {
type StepOutput;
fn step(&mut self) -> Result<Self::StepOutput, OptimizerError>;
fn zero_grad(&mut self) -> Result<(), OptimizerError>;
}