Rya*_*anM 13 python rust python-3.x pytorch tensor
我正在Rust中构建自己的Tensor类,我试图让它像PyTorch的实现一样.
以编程方式存储张量的最有效方法是什么,但具体来说,是像Rust这样的强类型语言? 是否有任何资源可以提供有关如何完成此操作的深入见解?
我目前正在构建一个连续的数组,因此,给定尺寸3 x 3 x 3,我的数组中只有3^3元素,这将代表张量.然而,这确实使得数组的一些数学运算和操作更加困难.
张量的维度应该是动态的,这样我就可以得到一个n尺寸张量.
存储此类数据的常用方法是在单个数组中,该数组在内存中布置为单个连续块。更具体地说,一个 3x3x3 张量将简单地存储为一个 27 个值的单个数组,一个接一个。
唯一使用维度的地方是计算(许多)坐标与该数组内的偏移量之间的映射。例如,要获取项目,[3, 1, 1]您需要知道它是 3x3x3 矩阵、9x3x1 矩阵还是 27x1x1 矩阵 - 在所有情况下,“存储”长度为 27 个项目,但“坐标”的解释将是不同的。如果使用从零开始的索引,则计算很简单,但您需要知道每个维度的长度。
这确实意味着调整大小和类似操作可能需要复制整个数组,但是没关系,您可以权衡这些(罕见)操作的性能来获得更常见操作(例如顺序读取)的性能。