Pytorch(笔记4)

降维

以矩阵为例,为了通过求和所有行的元素来降维(轴0),可以在调用函数时指定axis=0。由于输入矩阵沿0轴降维以生成输出向量,因此输入轴0的维数在输出形状中消失。

iimport torch  
  
# 创建一个从0到19的整数张量,并将其形状调整为5x4  
a = torch.arange(20).reshape(5, 4)  
  
# 输出张量a中所有元素的和  
print(a.sum())  # 这将输出一个scalar值,即所有元素的和  
  
# 输出张量a的形状  
print(a.shape)  # 这将输出torch.Size([5, 4]),表示张量a有5行4列  
  
# 沿着第0个维度(即行)计算张量a的和  
a_sum_axis0 = a.sum(axis=0)  
# 这将输出一个1x4的张量,其中每个元素是原始张量中对应列的和  
print(a_sum_axis0)  
  
# 获取张量a在第0个维度(即行)的大小  
a_sum_size0 = a.size(0)  
# 这将输出5,因为张量a有5行  
print(a_sum_size0)  
  
# 沿着第1个维度(即列)计算张量a的和  
a_sum_axis1 = a.sum(axis=1)  
# 这将输出一个5x1的张量,其中每个元素是原始张量中对应行的和  
print(a_sum_axis1)  
  
# 获取张量a在第1个维度(即列)的大小  
a_sum_size1 = a.size(1)  
# 这将输出4,因为张量a有4列  
print(a_sum_size1)  
  
# 沿着第1个维度(即列)计算张量a的和,但保持输出的维度与原始张量在第1个维度上的维度相同(即使用keepdims=True)  
sum_a = a.sum(axis=1, keepdims=True)  
# 这将输出一个5x1的张量,与a_sum_axis1相同,但因为keepdims=True,所以输出的形状是[5, 1]而不是[5]  
print(sum_a)
tensor(190)  # a.sum() 的结果,所有元素的和  
torch.Size([5, 4])  # a.shape 的结果,表示张量 a 的形状为 5x4  
tensor([10, 14, 18, 22])  # a_sum_axis0 的结果,沿着行(axis=0)求和  
5  # a_sum_size0 的结果,表示张量 a 在行方向(axis=0)的大小为 5  
tensor([ 6, 22, 38, 54, 70])  # a_sum_axis1 的结果,沿着列(axis=1)求和  
4  # a_sum_size1 的结果,表示张量 a 在列方向(axis=1)的大小为 4  
tensor([[ 6],  
        [22],  
        [38],  
        [54],  
        [70]])  # sum_a 的结果,沿着列(axis=1)求和并保持维度(keepdims=True)

矩阵-矩阵乘法

torch.mv(A, x) 执行的是矩阵 A 与向量 x 的乘法,但这里的 x 必须是一个一维向量,并且它被视为 A 矩阵的一列(或一行的转置)。实际上,torch.mv 并不常用,因为矩阵与向量的乘法通常可以通过 torch.matmul(A, x.unsqueeze(1)).squeeze(1) 或 @ 运算符来实现。

  • A (Tensor): 二维张量(矩阵),形状为 (m, n)。
  • x (Tensor): 一维张量(向量),长度必须为 n(即 A 的列数)

torch.mm(A, B) 执行的是两个矩阵 A 和 B 的乘法。这里要求 A 的列数必须与 B 的行数相同。

  • A (Tensor): 二维张量(矩阵),形状为 (m, n)。
  • B (Tensor): 二维张量(矩阵),形状为 (n, p)。

注意:在实际应用中,如果涉及更高维度的张量乘法或更灵活的乘法操作(例如,向量与向量、矩阵与向量的乘法等),通常推荐使用 torch.matmul 或 @ 运算符,因为它们能够处理更多样化的输入维度组合。

范数(norm)。

范数是一种满足特定条件的函数,用于度量向量或矩阵的大小。具体来说,范数需要满足以下三个性质:

  • 非负性:对于任意向量x,其范数||x||非负,即||x|| ≥ 0,且||x|| = 0当且仅当x为零向量。
  • 齐次性:对于任意实数k和向量x,有||kx|| = |k| * ||x||。
  • 三角不等式:对于任意两个向量x和y,有||x + y|| ≤ ||x|| + ||y||。

L0范数:
定义:向量中非零元素的个数。
举例:对于向量X = [1 2 3 0 -1 0 4 1 5],其L0范数为7,因为向量中有7个非零元素。
特性:L0范数常用于表示稀疏性,但由于其数学性质,它通常不被视为严格的范数。在实际应用中,L0范数的优化问题往往被放宽到L1或L2范数的优化。

L1范数:
定义:向量中所有元素绝对值的和。
举例:对于向量X = [1 2 3 0 -1 0 4 1 5],其L1范数为|1| + |2| + |3| + |-1| + |4| + |1| + |5| = 17。
特性:L1范数常用于机器学习中的正则化项,因为它可以产生稀疏解(即许多元素为0的解)。此外,L1范数也被称为曼哈顿距离或最小绝对误差。

L2范数(或欧几里得范数):
定义:向量中所有元素的平方和再开方。
举例:对于向量X = [1 2 3 0 -1 0 4 1 5],其L2范数为sqrt((|1|^2 + |2|^2 + |3|^2 + |-1|^2 + |4|^2 + |1|^2 + |5|^2)) = 7.55。
特性:L2范数是向量长度的标准度量,在机器学习中常用于表示欧氏距离。此外,L2范数正则化项有助于防止模型过拟合。

L∞范数(或最大范数):
定义:向量中所有元素绝对值的最大值。
举例:对于向量X = [1 2 3 0 -1 0 4 1 5],其L∞范数为max(|1|, |2|, |3|, |-1|, |4|, |1|, |5|) = 5。
特性:L∞范数常用于描述向量中的最大波动或偏差。

p范数:
定义:对于任意实数p(p ≥ 1),向量x的p范数定义为 (∑i |xi|p)(1/p)。
举例:当p=1时,即为L1范数;当p=2时,即为L2范数;当p→∞时,即为L∞范数。
特性:p范数是一个更一般化的概念,通过调整p的值,可以灵活地控制向量的“长度”或“大小”的度量方式。

自律每一天,fighting

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值