张量(tensor)及其操作总结

时间:2024-05-23 14:32:24

一、什么是张量
张量是属于线性代数里的知识点,线性代数是用虚拟数字世界表示真实物理世界的工具。

我们用点线面体的概念来比喻解释会更加容易理解:

点——标量(scalar)
线——向量(vector)
面——矩阵(matrix)
体——张量(tensor)
张量(tensor)及其操作总结
一个张量就是一个可以容纳N维数据及其线性操作的容器。
张量(tensor)及其操作总结
标量
单个数字就是一个标量。标量是一个0维的张量。因此,它具有0个轴,并且秩为0。
向量
向量是1维的张量,在计算机科学中经常把它叫做数组。向量由一串数字组成,具有1个轴,并且秩为1。
矩阵是秩为2的张量,即它有两个轴。矩阵就是把数字放入网格内(想象行和列),是一个2维的张量。
张量
严格来说,上述结构都是合法的张量。通常谈到张量时,都是将矩阵的概念推广到N>=3维。为了避免混淆,我们通常只把3维或更高维度的张量称为张量。

一个torch.size为3x3x3的tensor理解图如下:
张量(tensor)及其操作总结
二、对tensor的操作函数
squeeze()
减少tensor维度(只有维度=1时才能被去掉)
squeeze(0)就是在第一维度减少一个维度
squeeze(1)就是在第二维度减少一个维度
unsqueeze()
增加tensor维度
unsqueeze(0)就是在第一维度增加一个维度
unsqueeze(1)就是在第二维度增加一个维度
stack()
增加新的维度进行堆叠
transpose()
两个维度互换
permute()
多个维度互换,更灵活的transpose
cat()
对数据沿着某一维度进行拼接。cat后数据的总维数不变。
view
view(i,j)表示将原矩阵转化为i行j列的形式,重新塑造张量。 i为-1表示不限制行数,输出1列。i为1,j为-1表示不限制列数,输出1行。

对batch_size这个参数的理解
批尺寸Batch_Size为每次训练样本个数;
迭代次数=样本总数/批尺寸;
传送门