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<Arc<dyn TensorLike>, FerrumError>;
    fn zeros_like(
        &self,
        tensor: &Arc<dyn TensorLike>,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn from_slice(
        &self,
        data: &[f32],
        shape: &[usize],
        dtype: DataType,
        device: Device,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn to_device(
        &self,
        tensor: &Arc<dyn TensorLike>,
        device: Device,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn narrow(
        &self,
        tensor: &Arc<dyn TensorLike>,
        dim: usize,
        start: usize,
        length: usize,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn reshape(
        &self,
        tensor: &Arc<dyn TensorLike>,
        shape: &[usize],
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn zeros(
        &self,
        shape: &[usize],
        dtype: DataType,
        device: &Device,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn ones(
        &self,
        shape: &[usize],
        dtype: DataType,
        device: &Device,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn uniform(
        &self,
        shape: &[usize],
        low: f32,
        high: f32,
        dtype: DataType,
        device: &Device,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn normal(
        &self,
        shape: &[usize],
        mean: f32,
        std: f32,
        dtype: DataType,
        device: &Device,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
    fn from_tensor(
        &self,
        tensor: &Arc<dyn TensorLike>,
        device: &Device,
    ) -> Result<Arc<dyn TensorLike>, FerrumError>;
}
Expand description

Tensor factory for creating tensors on specific backends

Required Methods§

Source

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

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

Source

fn zeros_like( &self, tensor: &Arc<dyn TensorLike>, ) -> Result<Arc<dyn TensorLike>, FerrumError>

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

Source

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

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

Source

fn to_device( &self, tensor: &Arc<dyn TensorLike>, device: Device, ) -> Result<Arc<dyn TensorLike>, FerrumError>

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

Source

fn narrow( &self, tensor: &Arc<dyn TensorLike>, dim: usize, start: usize, length: usize, ) -> Result<Arc<dyn TensorLike>, FerrumError>

执行窄视图操作([MVP]

Source

fn reshape( &self, tensor: &Arc<dyn TensorLike>, shape: &[usize], ) -> Result<Arc<dyn TensorLike>, FerrumError>

reshape 张量([MVP]

Source

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

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

Source

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

Create tensor filled with ones([Phase 2+]

Source

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

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

Source

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

Create tensor from normal distribution([Phase 2+]

Source

fn from_tensor( &self, tensor: &Arc<dyn TensorLike>, device: &Device, ) -> Result<Arc<dyn TensorLike>, FerrumError>

Create tensor from existing tensor reference (may involve copying)

Implementors§