pub trait TensorOps: Send + Sync {
Show 15 methods
// Required methods
fn matmul(&self, a: &TensorRef, b: &TensorRef) -> Result<TensorRef>;
fn add(&self, a: &TensorRef, b: &TensorRef) -> Result<TensorRef>;
fn sub(&self, a: &TensorRef, b: &TensorRef) -> Result<TensorRef>;
fn mul(&self, a: &TensorRef, b: &TensorRef) -> Result<TensorRef>;
fn div(&self, a: &TensorRef, b: &TensorRef) -> Result<TensorRef>;
fn softmax(&self, tensor: &TensorRef, dim: i32) -> Result<TensorRef>;
fn layer_norm(
&self,
input: &TensorRef,
weight: &TensorRef,
bias: Option<&TensorRef>,
eps: f32,
) -> Result<TensorRef>;
fn rms_norm(
&self,
input: &TensorRef,
weight: &TensorRef,
eps: f32,
) -> Result<TensorRef>;
fn relu(&self, tensor: &TensorRef) -> Result<TensorRef>;
fn gelu(&self, tensor: &TensorRef) -> Result<TensorRef>;
fn silu(&self, tensor: &TensorRef) -> Result<TensorRef>;
fn concat(&self, tensors: &[&TensorRef], dim: usize) -> Result<TensorRef>;
fn split(
&self,
tensor: &TensorRef,
sizes: &[usize],
dim: usize,
) -> Result<Vec<TensorRef>>;
fn transpose(
&self,
tensor: &TensorRef,
dim0: usize,
dim1: usize,
) -> Result<TensorRef>;
fn permute(&self, tensor: &TensorRef, dims: &[usize]) -> Result<TensorRef>;
}Expand description
Basic tensor operations
Required Methods§
Sourcefn softmax(&self, tensor: &TensorRef, dim: i32) -> Result<TensorRef>
fn softmax(&self, tensor: &TensorRef, dim: i32) -> Result<TensorRef>
Apply softmax along specified dimension
Sourcefn layer_norm(
&self,
input: &TensorRef,
weight: &TensorRef,
bias: Option<&TensorRef>,
eps: f32,
) -> Result<TensorRef>
fn layer_norm( &self, input: &TensorRef, weight: &TensorRef, bias: Option<&TensorRef>, eps: f32, ) -> Result<TensorRef>
Apply layer normalization
Sourcefn rms_norm(
&self,
input: &TensorRef,
weight: &TensorRef,
eps: f32,
) -> Result<TensorRef>
fn rms_norm( &self, input: &TensorRef, weight: &TensorRef, eps: f32, ) -> Result<TensorRef>
Apply RMS normalization
Sourcefn concat(&self, tensors: &[&TensorRef], dim: usize) -> Result<TensorRef>
fn concat(&self, tensors: &[&TensorRef], dim: usize) -> Result<TensorRef>
Concatenate tensors along specified dimension
Sourcefn split(
&self,
tensor: &TensorRef,
sizes: &[usize],
dim: usize,
) -> Result<Vec<TensorRef>>
fn split( &self, tensor: &TensorRef, sizes: &[usize], dim: usize, ) -> Result<Vec<TensorRef>>
Split tensor along specified dimension