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§
Sourcefn empty(
&self,
shape: &[usize],
dtype: DataType,
device: Device,
) -> Result<TensorRef>
fn empty( &self, shape: &[usize], dtype: DataType, device: Device, ) -> Result<TensorRef>
创建指定形状/数据类型的空张量([MVP])
Sourcefn zeros_like(&self, tensor: &TensorRef) -> Result<TensorRef>
fn zeros_like(&self, tensor: &TensorRef) -> Result<TensorRef>
基于已有张量创建零填充张量([MVP])
Sourcefn from_slice(
&self,
data: &[f32],
shape: &[usize],
dtype: DataType,
device: Device,
) -> Result<TensorRef>
fn from_slice( &self, data: &[f32], shape: &[usize], dtype: DataType, device: Device, ) -> Result<TensorRef>
通过 slice 数据创建张量([MVP])
Sourcefn narrow(
&self,
tensor: &TensorRef,
dim: usize,
start: usize,
length: usize,
) -> Result<TensorRef>
fn narrow( &self, tensor: &TensorRef, dim: usize, start: usize, length: usize, ) -> Result<TensorRef>
执行窄视图操作([MVP])
Sourcefn zeros(
&self,
shape: &[usize],
dtype: DataType,
device: &Device,
) -> Result<TensorRef>
fn zeros( &self, shape: &[usize], dtype: DataType, device: &Device, ) -> Result<TensorRef>
Create tensor filled with zeros([Phase 2+] 可选实现)
Sourcefn ones(
&self,
shape: &[usize],
dtype: DataType,
device: &Device,
) -> Result<TensorRef>
fn ones( &self, shape: &[usize], dtype: DataType, device: &Device, ) -> Result<TensorRef>
Create tensor filled with ones([Phase 2+])
Sourcefn uniform(
&self,
shape: &[usize],
low: f32,
high: f32,
dtype: DataType,
device: &Device,
) -> Result<TensorRef>
fn uniform( &self, shape: &[usize], low: f32, high: f32, dtype: DataType, device: &Device, ) -> Result<TensorRef>
Create tensor from uniform random distribution([Phase 2+])