张量 Tensor
张量是一种多线性函数,用于表示矢量、标量和其他张量之间的线性关系,其在n维空间内有n^r个分量,每个分量都是坐标的函数。张量在坐标变换时也会按照某些规则作线性变换,是一种特殊的数据结构,在MindSpore网络运算中起着重要作用。
%%capture captured_output
# 实验环境已经预装了mindspore==2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号
!pip uninstall mindspore -y
!pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore==2.2.14
创建张量
张量的创建方式有多种,构造张量时,支持传入Tensor
、float
、int
、bool
、tuple
、list
和numpy.ndarray
类型。
使用init初始化器构造张量
张量的属性
张量的属性包括形状、数据类型、单个元素大小、占用字节数量、维数、元素个数和每一维步长。形状是一个tuple,数据类型是MindSpore的一个数据类型,单个元素大小是每一个元素占用字节数,占用字节数量是总字节数,维数是秩,元素个数是所有元素的个数,每一维步长是每一维所需要的字节数。
张量索引和张量运算
Tensor索引与Numpy索引类似,索引从0开始编制,负索引表示按倒序编制,冒号:
和 ...
用于对数据进行切片。张量之间有很多运算,包括算术、线性代数、矩阵处理(转置、标引、切片)、采样等,张量运算和NumPy的使用方式类似。
Tensor与NumPy互相转换
稀疏张量
稀疏张量是一种特殊类型的张量,其中大部分元素的值为零。在一些应用场景中,如推荐系统、分子动力学、图神经网络等,数据的特征往往是稀疏的。为了避免不必要的计算、存储和通讯开销,可以使用稀疏张量来表示这些数据。MindSpore现在已经支持最常用的CSR
和COO
两种稀疏数据格式。
CSRTensor
CSR稀疏张量格式以values、indptr和indices存储非零元素的值和位置,具有高效的存储与计算优势。其中,indptr表示每一行非零元素在values中的起始位置和终止位置,indices表示非零元素在列中的位置,values表示非零元素的值,shape表示稀疏张量的形状。
COOTensor
COO(Coordinate Format)稀疏张量格式用于表示在给定索引上非零元素的集合,包括indices(非零元素下标)、values(非零元素的值)和shape(稀疏张量的形状)。