10 个重大版本
新功能 0.13.0 | 2024 年 8 月 24 日 |
---|---|
0.12.0 | 2024 年 7 月 30 日 |
0.11.0 | 2024 年 7 月 5 日 |
0.6.0 | 2024 年 3 月 31 日 |
0.1.0 | 2023 年 12 月 31 日 |
#517 in 机器学习
1,137 个月下载量
用于 9 个 crate (7 个直接使用)
315KB
7K SLoC
rten-tensor
rten-tensor 是 RTen 机器学习运行时的基础库,提供多维数组。它与 ndarray 类似,但针对 RTen 库进行了优化。
lib.rs
:
rten_tensor 提供多维数组,在机器学习领域中通常被称为 张量。
每个张量都是数据和布局的组合。数据可以拥有、借用或可变借用。这与 1D 数组的 Vec<T>
、&[T]
和 &mut [T]
相似。布局确定维数的数量(即 秩)、每个维度的尺寸以及步长(给定维度上连续索引之间的差距)。
关键类型和特性
所有张量的基类型为 [TensorBase]。通常不直接使用,而是通过类型别名,根据张量维数(即 秩)在编译时或运行时是否已知,以及张量是否拥有、借用或可变借用其数据来使用。
秩 | 拥有(如 Vec<T> ) |
借用(如 &[T] ) |
可变借用 |
---|---|---|---|
静态 | [NdTensor] | [NdTensorView] | [NdTensorViewMut] |
动态 | [Tensor] | [TensorView] | [TensorViewMut] |
所有张量都实现了[布局]特征,该特征提供了查询张量形状、维度数和步长的方法。张量视图提供了各种方法来索引、迭代、切片和转换它们。[AsView]特征为拥有和可变借用张量提供了访问这些方法的方式。在概念上,它与Deref允许在&[T]
上访问Vec<T>的方法类似。导入特征的推荐方式是通过预导入模块
use rten_tensor::prelude::*;
use rten_tensor::NdTensor;
let tensor = NdTensor::from([[1, 2], [3, 4]]);
let transposed_elems: Vec<_> = tensor.transposed().iter().copied().collect();
assert_eq!(transposed_elems, [1, 3, 2, 4]);