张量Tensor
tensor是pytorch的一种特殊的数据格式,它表示多维数组概括了所有数学意义和计算机意义上的向量形式。
Rank/shape概念
- Rank:表示我们需要多少个索引来访问或引用张量数据结构中包含的元素,即代表维度数
- Shape(size):告诉我们每个轴的长度,即每个轴上有多少个数据
Rank=len(shape) Shape是很重要的东西,因为它包含了rank,size的所有东西,一般只会用它来分析
dtype
创建一个张量的时候必须声明类型,如果你有多个卡还需要声明device
code
# array转tensor
张量的运算
reshape
你可以将一个张量的shape改变成任意形状,前提只要它们的乘积相同,-1表示让Pytorch自动计算最后一个位置。
squeeze
去掉所有维数为1的的维度,对不为1的维度没有影响,不需要指定维度
t
unsqueeze
对数据维度进行扩充。给指定位置加上维数为一的维度,需要指定维度(一定是会增加一个1维度)
t
concat
- 沿着已存在的轴连接多个tensor,把对应维度X所代表的张量进行合并
- 所有的tensor大小一致,除了需要连接那个维度,tensor不能为空
# dim=1的时候相当于
stack
- 增加新的维度连接多个tensor
- 会先将原始数据维度扩展一维(unsqueeze),然后再按照维度进行拼接,具体拼接操作同torch.cat类似
t
张量广播
两个张量从尾部的维度开始进行比对,维度尺寸必须满足以下一个条件方可广播:
- 或者相等,
- 或者其中一个张量的维度尺寸为 1,
- 或者其中一个张量不存在这个维度。
# 示例1:相同形状的张量总是可广播的,因为总能满足以上规则。
张量自身元素运算
max函数就是把指定的Xdim合并为1然后去除,合并元素为最大值,保留其他维不变
t