1、tensor是什么?
tensor即张量,它是一种数据结构,用来表示或者编码神经网络模型的输入、输出和模型参数等。
下面有两组名词,一组是来自计算机科学的,另一组是来自数学,但它们有着相同的概念:
- number(数字)、array(数组)、2d-array(二维数组)
- scalar(标量)、vector(向量)、matrix(矩阵)
获取一个元素所需要的索引数 | 计算机 | 数学 |
---|---|---|
0 | 数字 | 标量 |
1 | 数组 | 向量 |
2 | 二维数组 | 矩阵 |
n | n维数组 | n维张量 |
索引数:例如有t = [3,4,5,6,7],若想取出7,就 t[5];
若有t = [[1,2,3],[4,5,6],[7,8,9]],若想取出7,就 t[2][0];
2、tensor的三个属性
2.1 Rank(秩)
秩就是张量中存在的维度数目,也即从张量中获取一个元素所需要的索引数,例如:矩阵、二维数组、二维张量,其秩均为2。
2.2 Axis(轴,复数为:Axes)
轴就是张量中某个特定的维度
秩的数量 | 轴的数量 |
---|---|
1 | 1 |
2 | 2 |
每个轴的长度告诉我们沿每个轴有多少索引可用,例如:已知张量 t 的第一个轴长为 3 ,则就只能索引到 t[0] t[1] t[2],大于 2 的就无法索引。
2.3 Shape 形状
张量的秩表示张量有多少个轴,张量的轴的长度表示该轴有多少索引可用。将二者结合起来,就可以得到张量的形状。使用 .shape 或 .size() 即可得到张量的形状。
import torch
m = torch.tensor([[0,1,2], [3,4,5]])
m.shape
torch.size([3,4])
m.size()
torch.size([2,3])