线性代数-介绍
一、标量:由一个元素的张量表示
1、标量变量由普通小写字母表示(例如:x y 和 z)
2、 R 表示所有(连续)实数 标量的空间
3、表达式 x∈R 是表示x是一个实值标量的正式形式
4、x,y∈{0,1} 来表明 x 和 y 是值只能为 0 或 1的数字
import torch x = torch.tensor([3.0]) y = torch.tensor([2.0]) x + y, x * y, x / y, x**y # 输出结果 (tensor([5.]), tensor([6.]), tensor([1.5000]), tensor([9.]))
二、向量:标量值组成的列表
1、这些标量值称为向量的 元素(elements)或分量(components)
2、通常将向量记为粗体、小写的符号(例如,𝐱、𝐲和𝐳)
3、我们通过张量的索引来访问任一元素。
x = torch.arange(4) print(x) print(x[-1]) # 输出结果 tensor([0, 1, 2, 3]) tensor(3)
三、长度、维度和形状
1、量的长度通常称为向量的维度
2、可以通过调用 Python 的内置 len()
函数来[访问张量的长度
3、向量或轴的维度被用来表示向量或轴的长度,向量或轴的元素数量
4、张量的维度用来表示张量具有的轴数
# len(x)与numel()都可以查看张量的长度 print(type(x)) print(x.numel()) print(len(x)) zz=torch.tensor([[1,2,3],[8,5,6]]) print(len(zz)) print(zz.numel()) print(zz.shape)# 注意shape函数调用没有() # 输出函数 <class 'torch.Tensor'> 4 4 2 6 torch.Size([2, 3])
可以发现,形状(shape)列出了沿每个轴的长度(维数)。对于只有一个轴的张量,形状只有一个元素
四、矩阵
1、矩阵将向量从一阶推广到二阶
2、通常用粗体、大写字母来表示(例如,𝐗、𝐘和 𝐙),在代码中表示为具有两个轴的张量。
3、使用 A∈Rm×n 来表示矩阵 𝐀,其由 m 行和 n 列的实值标量组成
# 矩阵的创建 A = torch.arange(20).reshape(-1, 4) A #输出结果 tensor([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]])
A.T test=torch.tensor([[1,2,3],[9,5,6],[5,6,7]]) print(test) print(test.T) # 可以发现,通过使用.T可以访问矩阵的转置 #输出结果 tensor([[1, 2, 3], [9, 5, 6], [5, 6, 7]]) tensor([[1, 9, 5], [2, 5, 6], [3, 6, 7]])
五、张量
就像向量是标量的推广,矩阵是向量的推广一样,我们可以构建具有更多轴的数据结构——张量
当我们开始处理图像时,张量将变得更加重要,图像以𝑛n维数组形式出现,其中3个轴对应于高度、宽度,以及一个通道(channel)轴,用于堆叠颜色通道(红色、绿色和蓝色)
X = torch.arange(24).reshape(2, 3, 4) print(X.shape) X # 输出结果 torch.Size([2, 3, 4]) tensor([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]])