pytorch ---- torch.linalg.norm()函数

server/2024/12/16 9:13:30/

torch.linalg.norm 是 PyTorch 中用于计算张量范数(Norm)的函数。范数是线性代数中的一个重要概念,用于量化向量或矩阵的大小或长度。这个函数可以处理任意形状的张量,支持多种类型的范数计算。

1.函数签名 

python">torch.linalg.norm(input, ord=None, dim=None, keepdim=False, dtype=None) -> Tensor

参数说明

  • input:
    要计算范数的张量。

  • ord (可选):
    范数的类型,决定范数的计算公式。常见值:

    • None(默认):计算 Frobenius 范数(矩阵)或 2 范数(向量)。
    • 1: 1 范数(列绝对值之和,或向量绝对值之和)。
    • 2: 2 范数(Euclidean 范数,平方和的平方根)。
    • 'fro': Frobenius 范数(矩阵的元素平方和开方)。
    • inf: 无穷范数(矩阵的行绝对值和最大值)。
    • -inf: 负无穷范数(矩阵的行绝对值和最小值)。
  • dim (可选):
    指定计算范数的维度。

    • 若为 None,计算整个张量的范数。
    • 若指定为单个或多个维度,则按维度计算范数。
  • keepdim (布尔,可选):
    如果为 True,结果会保留被归约的维度,维度的大小为 1

  • dtype (可选):
    指定计算中使用的数据类型,常用于提高数值精度。

返回值

返回计算出的张量范数。结果是一个标量或一个张量(取决于是否指定 dim 参数)。

常见用法示例

(1) 计算向量的 2 范数

计算向量的欧几里得长度(平方和的平方根)。

python">import torchx = torch.tensor([3.0, 4.0])
norm = torch.linalg.norm(x)
print(norm)  # 输出: 5.0 (因为 sqrt(3^2 + 4^2) = 5)

(2) 计算矩阵的 Frobenius 范数

python">A = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
norm = torch.linalg.norm(A, ord='fro')
print(norm)  # 输出: 5.4772 (因为 sqrt(1^2 + 2^2 + 3^2 + 4^2) ≈ 5.4772)

 (3) 按维度计算范数

python">B = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
norm_dim0 = torch.linalg.norm(B, ord=1, dim=0)
print(norm_dim0)  # 输出: tensor([4., 6.]) (列绝对值之和)norm_dim1 = torch.linalg.norm(B, ord=1, dim=1)
print(norm_dim1)  # 输出: tensor([3., 7.]) (行绝对值之和)

 (4) 计算无穷范数

python">C = torch.tensor([[1.0, -2.0], [3.0, -4.0]])
inf_norm = torch.linalg.norm(C, ord=float('inf'))
print(inf_norm)  # 输出: 7.0 (最大行绝对值和)

 (5) 计算负无穷范数

python">neg_inf_norm = torch.linalg.norm(C, ord=float('-inf'))
print(neg_inf_norm)  # 输出: 3.0 (最小行绝对值和)


http://www.ppmy.cn/server/150587.html

相关文章

Python使用Selenium库获取 网页节点元素、名称、内容的方法

我们要用到一些网页源码信息,例如获取一些节点的class内容, 除了使用Beautifulsoup来解析,还可以直接用Selenium库打印节点(元素)名称,用来获取元素的文本内容或者标签名。 例如获取下面的class的内容&am…

【前端 Uniapp】使用Vant打造Uniapp项目(避坑版)

一、基本介绍 Uniapp 是基于 Vue.js 的开发框架,通过一套代码可以同时发布到多个平台的应用框架。而 Vant 是针对移动端 Vue.js 的组件库。通过这样的组合,我们可以快速构建出一个跨平台的移动应用。Vant 已经支持多种小程序和 H5 平台,也对…

[ClickHouse 运维系列] 数据 TTL 学习笔记整理

一、clickhouse TTL ClickHouse的MergeTree引擎支持数据生命周期管理,即TTL(Time To Live)。TTL可以通过设置列字段或整张表的过期时间来实现。列字段的TTL会在时间到期时删除该列数据,而表级别的TTL会删除整张表的数据。如果同…

树控件、下拉框、文本框常用测试用例

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、控件的测试外观操作 1)项目中的所有树是否风格一致 2)树结构的默认状态是怎样的。比如默认树是否是展开,是展开几级&#…

在 Ubuntu 下通过 Docker 部署 Samba 服务器

Samba 是一个开源软件套件,允许在 Linux 和 Windows 之间共享文件和打印机。它实现了 SMB/CIFS 协议,使得不同操作系统之间的互操作性变得简单高效。Docker 是一个流行的容器化平台,可以快速打包、分发和管理应用程序。通过 Docker 部署 Samb…

米哈游C++开发精选60道面试题及参考答案

C++ 面向对象的三个特征 封装是把数据和操作数据的函数捆绑在一起,并且对数据的访问进行限制。这样做的好处是可以隐藏对象的内部实现细节,只暴露必要的接口给外部。例如,在一个银行账户类中,账户余额这个数据成员是被封装起来的,外部不能直接访问和修改,而是通过存款、取…

zookeeper 使用 简介 curator 的使用

自定义 RPC 注册中心选型 新时代的 RPC 技术已经不单单的是满足于简单的远程服务调用,也不满足仅仅是对协议,序列化,网络通讯,STUB的这系列的技术的封装和优化。现在的新的技术也会对注册中心,负载均衡的封装,引入了 SOA 的相关架构,例如 GRPC。引入 nameming 的 provi…

2024告别培训班 数通、安全、云计算、云服务、存储、软考等1000G资源分享

大类有:软考初级 软考中级 软考高级 华为认证 华三认证: 软考初级: 信息处理技术员 程序员 网络管理员 软考中级: 信息安全工程师 信息系统监理师 信息系统管理工程师 嵌入式系统设计时 数据库系统工程师 电子商务设…