Pytorch-Reduction Ops

news2024/11/16 13:29:41

文章目录

  • 前言
    • 1.torch.argmax()
    • 2.torch.argmin()
    • 3.torch.amax()
    • 4.torch.amin()
    • 5.torch.all()
    • 6.torch.any()
    • 7.torch.max()
    • 8.torch.dist()
    • 9.torch.logsumexp()
    • 10.torch.mean()
    • 11.torch.norm()
    • 12.torch.nansum()
    • 13.torch.prod()
    • 14.torch.cumsum()
    • 15.torch.cumprod()


前言

在这里插入图片描述


1.torch.argmax()

torch.argmax() 是 PyTorch 中的一个函数,用于在指定维度上获取张量中最大值的索引。

torch.argmax(input, dim=None, keepdim=False)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行操作。如果未指定,
		则默认在最后一个维度上进行操作。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。
		默认为 False,表示不保持维度
"""
import torch

# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 沿着第一个维度获取最大值的索引
max_indices = torch.argmax(x, dim=0)
print(max_indices)  # 输出: tensor([1, 1, 1])

2.torch.argmin()

torch.argmin() 是 PyTorch 中的一个函数,用于在指定维度上获取张量中最小值的索引。

torch.argmin(input, dim=None, keepdim=False)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行操作。如果未指定,则默认在最后一个维度上进行操作。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
"""
import torch

# 创建一个张量
x = torch.tensor([[3, 1, 2], [6, 5, 4]])

# 沿着第一个维度获取最小值的索引
min_indices = torch.argmin(x, dim=0)
print(min_indices)  # 输出: tensor([0, 0, 0])

3.torch.amax()

在 PyTorch 中,torch.amax() 函数用于计算张量的最大值。

torch.amax(input, dim=None, keepdim=False)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行操作。如果未指定,则默认在所有维度上进行操作,返回张量的全局最大值。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
"""
import torch

# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 计算全局最大值
global_max = torch.amax(x)
print(global_max)  # 输出: tensor(6)

# 沿着第一个维度计算最大值
max_values = torch.amax(x, dim=0)
print(max_values)  # 输出: tensor([4, 5, 6])
import torch

# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 计算全局最大值
global_max = torch.amax(x)
print(global_max)  # 输出: tensor(6)

# 沿着第一个维度计算最大值
max_values = torch.amax(x, dim=0)
print(max_values)  # 输出: tensor([4, 5, 6])

4.torch.amin()

在 PyTorch 中,torch.amin() 函数用于计算张量的最小值。

torch.amin(input, dim=None, keepdim=False)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行操作。如果未指定,则默认在所有维度上进行操作,返回张量的全局最小值。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
"""
import torch

# 创建一个张量
x = torch.tensor([[3, 1, 2], [6, 5, 4]])

# 计算全局最小值
global_min = torch.amin(x)
print(global_min)  # 输出: tensor(1)

# 沿着第一个维度计算最小值
min_values = torch.amin(x, dim=0)
print(min_values)  # 输出: tensor([3, 1, 2])

5.torch.all()

torch.all() 是 PyTorch 中的一个函数,用于检查张量中的所有元素是否都满足某个条件。

torch.all(input, dim=None, keepdim=False)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行操作。如果未指定,则默认在所有元素上进行操作,返回一个标量布尔值。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
"""
import torch

# 创建一个张量
x = torch.tensor([[True, True], [False, True]])

# 检查全局是否所有元素都为 True
global_all = torch.all(x)
print(global_all)  # 输出: tensor(False)

# 沿着第一个维度检查是否所有元素都为 True
dim_all = torch.all(x, dim=0)
print(dim_all)  # 输出: tensor([False, True])

6.torch.any()

torch.any() 是 PyTorch 中的一个函数,用于检查张量中的任意元素是否满足某个条件。

torch.any(input, dim=None, keepdim=False)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行操作。如果未指定,则默认在所有元素上进行操作,返回一个标量布尔值。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
"""
import torch

# 创建一个张量
x = torch.tensor([[True, True], [False, True]])

# 检查全局是否存在任意一个元素为 True
global_any = torch.any(x)
print(global_any)  # 输出: tensor(True)

# 沿着第一个维度检查是否存在任意一个元素为 True
dim_any = torch.any(x, dim=0)
print(dim_any)  # 输出: tensor([ True,  True])

7.torch.max()

torch.max() 是 PyTorch 中的一个函数,用于计算张量中的最大值。

torch.max(input, dim=None, keepdim=False, out=None)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行操作。如果未指定,则默认在所有元素上进行操作,返回一个标量张量。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
out:可选参数,指定输出张量作为结果的存储位置。
"""
import torch

# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 计算全局最大值
global_max = torch.max(x)
print(global_max)  # 输出: tensor(6)

# 沿着第一维度计算最大值和对应的索引
max_values, max_indices = torch.max(x, dim=0)
print(max_values)  # 输出: tensor([4, 5, 6])
print(max_indices)  # 输出: tensor([1, 1, 1])
import torch

# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 沿着第一维度计算最大值和对应的索引
max_values, max_indices = torch.max(x, dim=1)
print(max_values)  # 输出: tensor([3, 6])
print(max_indices)  # 输出: tensor([2, 2])

8.torch.dist()

torch.dist() 是 PyTorch 中的一个函数,用于计算两个张量之间的距离。

torch.dist(input, other, p=2)
"""
input:第一个输入张量。
other:第二个输入张量。
p:可选参数,表示要使用的距离度量。默认为 2,表示欧氏距离。
"""
import torch

# 创建两个张量
x = torch.tensor([1, 2, 3])
y = torch.tensor([4, 5, 6])

# 计算欧氏距离
distance = torch.dist(x, y)
print(distance)  # 输出: tensor(5.1962)

9.torch.logsumexp()

torch.logsumexp() 是 PyTorch 中的一个函数,用于计算张量的对数求和指数。

torch.logsumexp(x, dim) = log(sum(exp(x), dim))
torch.logsumexp(input, dim, keepdim=False, out=None)
"""
input:输入张量。
dim:指定在哪个维度上进行操作。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
out:可选参数,指定输出张量作为结果的存储位置。
"""
import torch

# 创建一个张量
x = torch.tensor([1, 2, 3, 4])

# 计算对数求和指数
result = torch.logsumexp(x, dim=0)
print(result)  # 输出: tensor(4.4402)

10.torch.mean()

torch.mean() 是 PyTorch 中的一个函数,用于计算张量的平均值。

torch.mean(input, dim=None, keepdim=False, out=None)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行平均值计算。如果未指定,则默认在所有元素上进行计算,返回一个标量张量。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
out:可选参数,指定输出张量作为结果的存储位置。
"""
import torch

# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 计算全局平均值
global_mean = torch.mean(x)
print(global_mean)  # 输出: tensor(3.5000)

# 沿着第一维度计算平均值
mean_values = torch.mean(x, dim=0)
print(mean_values)  # 输出: tensor([2.5000, 3.5000, 4.5000])

11.torch.norm()

torch.norm() 是 PyTorch 中的一个函数,用于计算张量的范数(norm)。

torch.norm(input, p='fro', dim=None, keepdim=False, out=None)
"""
input:输入张量。
p:可选参数,表示要计算的范数类型。默认为 'fro',表示计算 Frobenius 范数。还可以指定其他值,如 1 表示计算 L1 范数,2 表示计算 L2 范数等。
dim:可选参数,指定在哪个维度上进行范数计算。如果未指定,则默认在所有元素上进行计算,返回一个标量张量。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
out:可选参数,指定输出张量作为结果的存储位置。
"""
import torch

# 创建一个张量
x = torch.tensor([[1., 2.], [3., 4.]])

# 计算 Frobenius 范数
frobenius_norm = torch.norm(x)
print(frobenius_norm)  # 输出: tensor(5.4772)

# 计算 L1 范数
l1_norm = torch.norm(x, p=1)
print(l1_norm)  # 输出: tensor(10.)

# 计算 L2 范数
l2_norm = torch.norm(x, p=2)
print(l2_norm)  # 输出: tensor(5.4772)

# 沿着第一维度计算范数
norm_values = torch.norm(x, dim=0)
print(norm_values)  # 输出: tensor([3.1623, 4.4721])

12.torch.nansum()

torch.nansum() 是 PyTorch 中的一个函数,用于计算张量中忽略 NaN(Not a Number)值的元素之和。

torch.nansum(input, dim=None, keepdim=False, dtype=None, out=None)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行求和。如果未指定,则默认在所有元素上进行求和,返回一个标量张量。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
dtype:可选参数,指定输出张量的数据类型。如果未指定,则默认使用输入张量的数据类型。
out:可选参数,指定输出张量作为结果的存储位置。
"""
import torch

# 创建一个包含 NaN 值的张量
x = torch.tensor([[1, float('nan'), 3], [4, 5, float('nan')]])

# 沿着第一维度计算忽略 NaN 值后的求和
sum_values = torch.nansum(x, dim=0)
print(sum_values)  # 输出: tensor([5., 5., 3.])

13.torch.prod()

torch.prod() 是 PyTorch 中的一个函数,用于计算张量中元素的乘积。

torch.prod(input, dim=None, keepdim=False, dtype=None)
"""
input:输入张量。
dim:可选参数,指定在哪个维度上进行乘积计算。如果未指定,则默认在所有元素上进行乘积,返回一个标量张量。
keepdim:可选参数,指定是否保持输出张量的维度与输入张量相同。默认为 False,表示不保持维度。
dtype:可选参数,指定输出张量的数据类型。如果未指定,则默认使用输入张量的数据类型。
"""
import torch

# 创建一个张量
x = torch.tensor([[1, 2], [3, 4]])

# 计算所有元素的乘积
product = torch.prod(x)
print(product)  # 输出: tensor(24)

# 沿着第一维度计算乘积
product_values = torch.prod(x, dim=0)
print(product_values)  # 输出: tensor([3, 8])


# 沿着多个维度同时计算乘积
product_multiple_dims = torch.prod(x, dim=0, keepdim=True)
product_multiple_dims = torch.prod(product_multiple_dims, dim=1, keepdim=True)
print(product_multiple_dims)  # 输出: tensor([[24]])

14.torch.cumsum()

torch.cumsum() 是 PyTorch 中的一个函数,用于计算张量中元素的累积和(逐元素累积求和)。

torch.cumsum(input, dim, dtype=None)
"""
input:输入张量。
dim:指定在哪个维度上进行累积和计算。
dtype:可选参数,指定输出张量的数据类型。如果未指定,则默认使用输入张量的数据类型。
"""
import torch

# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 沿着第一维度计算累积和
cumulative_sum = torch.cumsum(x, dim=0)
print(cumulative_sum)
# 输出:
# tensor([[1, 2, 3],
#         [5, 7, 9]])

# 沿着第二维度计算累积和
cumulative_sum_dim1 = torch.cumsum(x, dim=1)
print(cumulative_sum_dim1)
# 输出:
# tensor([[ 1,  3,  6],
#         [ 4,  9, 15]])

15.torch.cumprod()

torch.cumprod() 是 PyTorch 中的一个函数,用于计算张量中元素的累积乘积(逐元素累积求积)。

torch.cumprod(input, dim, dtype=None)
"""
input:输入张量。
dim:指定在哪个维度上进行累积乘积计算。
dtype:可选参数,指定输出张量的数据类型。如果未指定,则默认使用输入张量的数据类型
"""
import torch

# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 沿着第一维度计算累积乘积
cumulative_product = torch.cumprod(x, dim=0)
print(cumulative_product)
# 输出:
# tensor([[ 1,  2,  3],
#         [ 4, 10, 18]])

# 沿着第二维度计算累积乘积
cumulative_product_dim1 = torch.cumprod(x, dim=1)
print(cumulative_product_dim1)
# 输出:
# tensor([[ 1,  2,  6],
#         [ 4, 20, 120]])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1713948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 实例

一、页面效果图 二、代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><script src"../vue.js" type"text/javascript"></script><title>vue 实例</title></head><body>&l…

Jmeter 安装教程:简单易懂

随着互联网的不断发展&#xff0c;网站和应用程序的性能测试变得越来越重要。Apache JMeter 是一款广泛使用的性能测试工具&#xff0c;它强大且使用广泛&#xff0c;适用于各种性能测试需求。不论你是刚刚接触性能测试的新手&#xff0c;还是一位有经验的测试工程师&#xff0…

【ORB_SLAM系列3】—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

redis--集群节点维护

添加节点 因公司业务发展迅猛&#xff0c;现有的三主三从redis cluster架构可能无法满足现有业务的并发写入需求&#xff0c;因此公司紧急采购一台服务器192.168.7.107&#xff0c;需要将其动态添加到集群当中其不能影响业务使用和数据丢失&#xff0c;则添加过程如下: 同步之…

适合多种苛刻环境的惯性测量单元M-G370PDS

全球IMU市场d在汽车和机器人技术进步和不断增长的应用需求&#xff0c;保持着高速增长的趋势&#xff0c;其中航空航天、国防和汽车等行业对高精度、稳定和紧凑的IMU需求尤为强烈&#xff0c;这些行业对精度和可靠性的高要求直接影响了相关技术的发展方向。 爱普生惯性测量单…

【错题集-编程题】天使果冻(递推)

牛客对应题目链接&#xff1a;天使果冻 (nowcoder.com) 一、分析题目 预处理 递推 / 动态规划 f[i]&#xff1a;表示前 i 个数中的最大值。g[i]&#xff1a;表示前 i 个数中的第二大的值。 状态转移方程&#xff1a; f[i] max(f[i-1], arr[i]);arr[i] > f[i-1]&#xf…

实用新型专利申请被驳回原因

实用新型专利作为知识产权的重要组成部分&#xff0c;对推动技术创新和产业发展具有重要意义。然而&#xff0c;在申请实用新型专利的过程中&#xff0c;有时会遇到被驳回的情况。 实用新型专利被驳回的一个常见原因是技术方案不具备新颖性、创造性和实用性等专利授权条件。专利…

如何使用SSRFire自动扫描和发现SSRF漏洞

关于SSRFire SSRFire是一款针对SSRF漏洞的自动化漏洞挖掘工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员只需要给该工具提供一个目标域名和服务器信息&#xff0c;SSRFire将帮助我们自动挖掘出潜在的SSRF漏洞。除此之外&#xff0c;该工具还可以挖掘XSS以及开放重…

c语言 分而治之(施特拉森矩阵乘法)

给定两个大小分别为 nxn 的方阵 A 和 B&#xff0c;求它们的乘法矩阵。 朴素方法&#xff1a;以下是两个矩阵相乘的简单方法。 void multiply(int A[][N], int B[][N], int C[][N]) { for (int i 0; i < N; i) { for (int j 0; j < N; j) { …

IEnumerable 、 IEnumerator,yield return

自定义迭代类 》》》using System.Collections; using System.Collections; using System.Runtime.CompilerServices;namespace ConsoleApp1 {// 可迭代对象 标记此类可迭代 继承IEnumerable 类是可以迭代public class SpecificEnumerable : IEnumerable{private readonly …

【架构-19】架构风格比较

独立构件风格(Independent Components): 适用场景:需要灵活扩展和组合的复杂大数据应用 特点: 高度解耦:各组件之间高度独立,可单独开发和部署 灵活性和可扩展性:易于根据需求添加或替换组件 复杂度高:需要管理多个独立的组件及其交互 通信开销:组件间需要通过网络通信,可能会…

利用cython将.py文件编译为.pyd文件

文章目录 1. 引言2. py文件编译为pyd文件步骤2.1 环境准备2.2 准备setup.py文件2.3 进行编译 3. 测试代码 1. 引言 在实际的Python开发中&#xff0c;为了防止Python脚本源码暴露&#xff0c;常常需要对python源码文件进行加密保护&#xff0c;Python的原始文件格式为.py&…

(IDEA修改Java版本)java: 警告: 源发行版 X 需要目标发行版 X

搜索关键词&#xff1a;一致、发行 错误信息 其他错误&#xff1a; java: 错误: 不支持发行版本 6 java: -source 1.5 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式) 思路 有两个地方要检查&#xff0c;JDK版本保持一致即可。 比如统一用JDK8或…

外卖系统开发的技术栈和架构设计

开发一个功能完备且高效的外卖系统&#xff0c;需要选择合适的技术栈并设计良好的系统架构。本文将详细介绍外卖系统开发过程中常用的技术栈以及架构设计的关键要点&#xff0c;帮助开发者构建一个高性能、可扩展且易维护的外卖平台。 1. 技术栈选择 选择合适的技术栈是开发…

基于51单片机智能蓝牙台灯

基于51单片机智能蓝牙台灯 &#xff08;仿真&#xff0b;程序&#xff0b;原理图PCB&#xff09; 功能介绍 具体功能&#xff1a; 1.分为手动/自动两种模式&#xff0c;自动模式下对应LED指示灯亮&#xff1b; 2.手动模式下&#xff0c;可用按键调节亮度&#xff1b; 3.自动…

OLED写入指令和数据

1.OLED写命令 写命令/数据的代码 / * 1. start() 2. 写入 b0111 1000 0x78 3. ACK 4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据 5. ACK 6. 写入指令/数据 7. ACK 8. STOP */ void Oled_Write_Cmd(char dataCmd)5.1.4 OLED的寻址模式 如何显示一个点&#x…

NTLite深度Windows系统镜像文件修改定制

计算机爱好者和技术宅的圈子里,NTLite是一个广受欢迎的名字,一款强大的Windows系统定制工具,允许用户对Windows安装镜像进行深度修改,从而打造出一个更加个性化、高效且精简的操作系统。无论是为了优化系统性能、移除不必要的组件,还是集成最新的更新和驱动,NTLite都能成…

Mac在docker可视化界面上安装主流数据库

前言 篇幅有点长&#xff0c;大家可以打开目录快速跳转到想要的数据库即可&#xff01; 虽然说用命令行会显得我们更加专业一些&#xff0c;但对于我英语水平不怎么好的人来说&#xff0c;毕竟命令多又长&#xff0c;还不好记。我个人是喜欢复杂问题简单化&#xff0c;踩了很多…

如何使用 ArcGIS Pro 计算水库库容量

计算水库库容量可以在前期规划的时候协助水库的选址和预估水库的规模&#xff0c;这里为大家介绍一下在 ArcGIS Pro 中如何计算水库的库容量&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据&#xff0c;除了DEM数据&#xff0c;常见…

JAVA 大鱼吃小鱼小游戏

java实现大鱼吃小鱼&#xff0c;支持身份证防沉迷、账号密码、选择难度 放沉迷 登录 选择难度 游戏界面