Skip to main content

TensorFactory

Trait TensorFactory 

Source
pub trait TensorFactory: Send + Sync {
    // Required methods
    fn empty(
        &self,
        shape: &[usize],
        dtype: DataType,
        device: Device,
    ) -> Result<TensorRef>;
    fn zeros_like(&self, tensor: &TensorRef) -> Result<TensorRef>;
    fn from_slice(
        &self,
        data: &[f32],
        shape: &[usize],
        dtype: DataType,
        device: Device,
    ) -> Result<TensorRef>;
    fn to_device(&self, tensor: &TensorRef, device: Device) -> Result<TensorRef>;
    fn narrow(
        &self,
        tensor: &TensorRef,
        dim: usize,
        start: usize,
        length: usize,
    ) -> Result<TensorRef>;
    fn reshape(&self, tensor: &TensorRef, shape: &[usize]) -> Result<TensorRef>;
    fn zeros(
        &self,
        shape: &[usize],
        dtype: DataType,
        device: &Device,
    ) -> Result<TensorRef>;
    fn ones(
        &self,
        shape: &[usize],
        dtype: DataType,
        device: &Device,
    ) -> Result<TensorRef>;
    fn uniform(
        &self,
        shape: &[usize],
        low: f32,
        high: f32,
        dtype: DataType,
        device: &Device,
    ) -> Result<TensorRef>;
    fn normal(
        &self,
        shape: &[usize],
        mean: f32,
        std: f32,
        dtype: DataType,
        device: &Device,
    ) -> Result<TensorRef>;
    fn from_tensor(
        &self,
        tensor: &TensorRef,
        device: &Device,
    ) -> Result<TensorRef>;
}
Expand description

Tensor factory for creating tensors on specific backends

Required Methods§

Source

fn empty( &self, shape: &[usize], dtype: DataType, device: Device, ) -> Result<TensorRef>

创建指定形状/数据类型的空张量([MVP]

Source

fn zeros_like(&self, tensor: &TensorRef) -> Result<TensorRef>

基于已有张量创建零填充张量([MVP]

Source

fn from_slice( &self, data: &[f32], shape: &[usize], dtype: DataType, device: Device, ) -> Result<TensorRef>

通过 slice 数据创建张量([MVP]

Source

fn to_device(&self, tensor: &TensorRef, device: Device) -> Result<TensorRef>

迁移张量到目标设备([MVP]

Source

fn narrow( &self, tensor: &TensorRef, dim: usize, start: usize, length: usize, ) -> Result<TensorRef>

执行窄视图操作([MVP]

Source

fn reshape(&self, tensor: &TensorRef, shape: &[usize]) -> Result<TensorRef>

reshape 张量([MVP]

Source

fn zeros( &self, shape: &[usize], dtype: DataType, device: &Device, ) -> Result<TensorRef>

Create tensor filled with zeros([Phase 2+] 可选实现)

Source

fn ones( &self, shape: &[usize], dtype: DataType, device: &Device, ) -> Result<TensorRef>

Create tensor filled with ones([Phase 2+]

Source

fn uniform( &self, shape: &[usize], low: f32, high: f32, dtype: DataType, device: &Device, ) -> Result<TensorRef>

Create tensor from uniform random distribution([Phase 2+]

Source

fn normal( &self, shape: &[usize], mean: f32, std: f32, dtype: DataType, device: &Device, ) -> Result<TensorRef>

Create tensor from normal distribution([Phase 2+]

Source

fn from_tensor(&self, tensor: &TensorRef, device: &Device) -> Result<TensorRef>

Create tensor from existing tensor reference (may involve copying)

Implementors§