今天是参加昇思25天学习打卡营的第三天,学习的内容是《张量Tensor》,这里做一个简单的分享。
今天学习的目标是:认识张量Tensor这种数据结构,了解其基本用法
(1) 张量Tensor的基本定义
张量(Tensor)是一种类似数组、矩阵的数据结构,可以理解为支持嵌套的变长多维数组。其变换规则与矩阵不同,张量进行坐标变换时,每个分量都是独立按照某些规则做线性变换的。张量的分量数量称为张量的秩或者阶。一个张量的示例如图:
(2)张量的创建
张量的创建形式包括直接赋值、基于numpy数组赋值、使用init初始化器、继承另一个张量来创建四种形式。init主要用于并行模式下的延后初始化,在正常情况下不建议使用init对参数进行初始化。
(3)张量的属性
张量的属性包括形状、数据类型、转置张量、单个元素大小、占用字节数量、维数、元素个数和每一维步长。
(4)张量的索引方式
Tensor索引与Numpy索引类似,索引从0开始编制,负索引表示按倒序编制,冒号`:`和 `...`用于对数据进行切片。
(5) 张量运算
张量支持加(+)、减(-)、乘(\*)、除(/)、取模(%)、整除(//)等运算。其运算方式为分量间进行独立计算。例如:
张量可以通过concat 、stack分别实现给定维度、不同维度的连接。同时,张量和numpy数组之间可以通过t Tensor.from_numpy(n)、Tensor::asnumpy()等方法来实现的相互转化。
(6)稀疏张量
稀疏张量是对于张量中大量存在0元素的情况下的一种压缩存储的结构。MindSpore现在已经支持最常用的`CSR`和`COO`两种稀疏数据格式。
CSR主要通过indptr、indices、values、shape四个元素来组织,COO是indices、values、shape来组织。
以上是的张量的全部内容。 整体来说,张量的整体用起来更像是一个的可变的多维数组,其运算符的复杂程度要低于矩阵。附上今日打卡图: