范数(norm)

范数在机器学习中扮演重要角色,它衡量向量的大小并映射为非负值。根据定义,范数需满足特定性质,如0范数计数非零元素,2范数对应欧几里得距离,而无穷范数则表示最大幅值元素。在深度学习中,Frobenius范数用于衡量矩阵的大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     范数,在机器学习中通常用于衡量一个向量的大小,形式上,

     范数的定义如下:


     其中 p>=1

     从宏观上来讲,范数是将向量映射到非负值的函数,从直观上来说,范数是向量x到原点的距离。

     但是范数并不局限于上述的公式,对任意的函数只要满足以下的性质,则可以称该函数是范数:

     1)对于 f(x) = 0,则一定有x = 0

     2) f(x + y) <= f(x) + f(y)

     3)对任意的标量a,一定有 f(ax) = |a| f(x)

     注意:以上性质中,xy都是向量。

     当p = 2时,范数就是我们通常讲的欧几

### 如何在 PyTorch 中使用 L2 范数 `torch.norm` 函数 #### 使用方法概述 为了计算张量的L2范数,在调用`torch.norm`函数时设置参数`p=2`即可。这适用于向量和矩阵形式的输入数据。 #### 向量的L2范数计算实例 对于一维张量(即向量),可以通过如下方式来获取其L2范数: ```python import torch vector = torch.tensor([-4., -3., -2., -1., 0., 1., 2., 3., 4.]) l2_norm_vector = torch.norm(vector, p=2) print(l2_norm_vector) # 输出应接近于7.7460 ``` 上述代码创建了一个包含负数到正数值的一维浮点型张量,并对其应用了L2范数运算[^4]。 #### 矩阵的L2范数计算实例 当处理维或多维张量(如矩阵)并希望沿特定维度解L2范数时,可通过设定`dim`参数指定期望的操作轴线: ```python matrix = vector.view(3, 3) # 计算整个矩阵的Frobenius范数,默认行为相当于设置了p='fro' full_matrix_l2_fro = torch.norm(matrix) # 对每一列分别计算L2范数 column_wise_l2 = torch.norm(matrix, p=2, dim=0) # 对每一行分别计算L2范数 row_wise_l2 = torch.norm(matrix, p=2, dim=1) print(f"Full matrix Fro norm: {full_matrix_l2_fro}") print(f"Column-wise L2 norms: {column_wise_l2}") print(f"Row-wise L2 norms: {row_wise_l2}") ``` 这里展示了三种不同情况下的L2范数计算:整体矩阵、按列以及按行的方式[^1]。 #### 关键参数解释 - **input**: 输入张量。 - **p (float)**: 指定要使用的范数类型;对于L2范数而言,应该设为2。 - **dim (int or tuple of ints, optional)**: 如果提供了此参数,则表示沿着哪个维度进行操作;如果不提供,则默认在整个张量上执行全局范数计算。 - **keepdim (bool, optional)**: 是否保持输出张量具有相同的尺寸结构作为输入张量,仅当指定了`dim`时有效。 - **dtype (torch.dtype, optional)**: 可选地指定返回值的数据类型。 通过调整这些参数选项,可以根据具体需灵活运用`torch.norm`来进行各种类型的范数计算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值