pub mod ops;
use crate::scalar::TensorScalar;
use crate::tensor::{CpuTensor, TensorRef};
use tl_backend::BackendResult;
pub trait GradFn<T: TensorScalar>: Send + Sync {
fn backward(&self, grad_output: &CpuTensor<T>) -> BackendResult<Vec<CpuTensor<T>>>;
fn inputs(&self) -> Vec<TensorRef<T>>;
}