torch中关于torch.max()和torch.min()函数的理解

torch.minimum与torch.min() 函数用于逐元素地比较两个张量,并返回一个新的张量,其中每个元素是两个输入张量对应元素中的最小值。print("最小值:", min_value)print("最小值:", min_value) 阅读详情
AI摘要

本文主要介绍了tensor类型数据中max和min函数的用法。包括torch.max(tensorA)返回最大值,torch.max(tensorA, dim)返回指定维度最大数和下标,torch.max(tensorA, tensorB)比较两tensor较大元素。还说明了数据转换及不同阶张量取最大值的方法。

  • 简介

在tensor类型的数据中,max和min函数常用来比较两个tensor数据的大小,或者取出tensor数据中的最大值。关于max函数和min函数的用法有以下几种场景:

对于tensorA和tensorB:

  1. torch.max(tensorA):返回tensor中的最大值。
  2. torch.mac(tensorA,dim):dim表示指定的维度,返回指定维度的最大数和对应下标
  3. torch.max(tensorA,tensorB):比较tensorA和tensorB相对较大的元素。
输入:
x = th.arange(0,16,1).view(4,4)
print('x:\n',x)
print('t.max(x):\n',t.max(x))
print('t.max(x,1):\n',t.max(x,1))
print('t.max(x,0):\n',t.max(x,0))
print('t.max(x,1)[0]:\n',t.max(x,1)[0])
print('t.max(x,1)[1]:\n',t.max(x,1)[1])
print('t.max(x,1)[1].data:\n',t.max(x,1)[1].data)
print('t.max(x,1)[1].data.numpy():\n',t.max(x,1)[1].data.numpy())
print('t.max(x,1)[1].data.numpy().squeeze():\n',t.max(x,1)[1].data.numpy().squeeze())
print('t.max(x,1)[0].data:\n',t.max(x,1)[0].data)
print('t.max(x,1)[0].data.numpy():\n',t.max(x,1)[0].data.numpy())
print('t.max(x,1)[0].data.numpy().squeeze():\n',t.max(x,1)[0].data.numpy().squeeze())
输出:
x:
 tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])
t.max(x):
 tensor(15)
t.max(x,1):
 torch.return_types.max(
values=tensor([ 3,  7, 11, 15]),
indices=tensor([3, 3, 3, 3]))
t.max(x,0):
 torch.return_types.max(
values=tensor([12, 13, 14, 15]),
indices=tensor([3, 3, 3, 3]))
t.max(x,1)[0]:
 tensor([ 3,  7, 11, 15])
t.max(x,1)[1]:
 tensor([3, 3, 3, 3])
t.max(x,1)[1].data:
 tensor([3, 3, 3, 3])
t.max(x,1)[1].data.numpy():
 [3 3 3 3]
t.max(x,1)[1].data.numpy().squeeze():
 [3 3 3 3]
t.max(x,1)[0].data:
 tensor([ 3,  7, 11, 15])
t.max(x,1)[0].data.numpy():
 [ 3  7 11 15]
t.max(x,1)[0].data.numpy().squeeze():
 [ 3  7 11 15]

上面代码中x是一个4*4的二阶张量:

tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])

t.max(x)表示从x中取出最大的那个值:15

t.max(x,1)表示每行中取出最大的元素,并返回其下标,第一行为3,第二行为7,第三行为11,第四行为15.注意:t.max(x,1)中的1表示行,0表示列,因为此处的例子是二阶的张量,只有行和列。

所以t.max(x,1)表示每列中取出最大的元素,即[3,7,11,15]。

.data 只返回variable中的数据部分(去掉Variable containing:)。

.data.numpy() 把数据转化成numpy ndarry。

].data.numpy().squeeze() 把数据条目中维度为1 的删除掉。

torch.max(tensorA,tensorB) element-wise 比较tensorA 和tensorB 中的元素,返回较大的那个值。

那如果是3阶的张两呢?

下面我们将x的张量变成2*2*4,即2维的两行四列。

输入:
x = th.arange(0,16,1).view(2,2,4)
print('x:\n',x)
print('t.max(x):\n',t.max(x))
print('t.max(x,1):\n',t.max(x,1))
print('t.max(x,0):\n',t.max(x,0))
print('t.max(x,1)[0]:\n',t.max(x,1)[0])
print('t.max(x,1)[1]:\n',t.max(x,1)[1])
print('t.max(x,1)[1].data:\n',t.max(x,1)[1].data)
print('t.max(x,1)[1].data.numpy():\n',t.max(x,1)[1].data.numpy())
print('t.max(x,1)[1].data.numpy().squeeze():\n',t.max(x,1)[1].data.numpy().squeeze())
print('t.max(x,1)[0].data:\n',t.max(x,1)[0].data)
print('t.max(x,1)[0].data.numpy():\n',t.max(x,1)[0].data.numpy())
print('t.max(x,1)[0].data.numpy().squeeze():\n',t.max(x,1)[0].data.numpy().squeeze())


输出:

x:
 tensor([[[ 0,  1,  2,  3],
         [ 4,  5,  6,  7]],

        [[ 8,  9, 10, 11],
         [12, 13, 14, 15]]])
t.max(x):
 tensor(15)
t.max(x,1):
 torch.return_types.max(
values=tensor([[ 4,  5,  6,  7],
        [12, 13, 14, 15]]),
indices=tensor([[1, 1, 1, 1],
        [1, 1, 1, 1]]))
t.max(x,0):
 torch.return_types.max(
values=tensor([[ 8,  9, 10, 11],
        [12, 13, 14, 15]]),
indices=tensor([[1, 1, 1, 1],
        [1, 1, 1, 1]]))
t.max(x,1)[0]:
 tensor([[ 4,  5,  6,  7],
        [12, 13, 14, 15]])
t.max(x,1)[1]:
 tensor([[1, 1, 1, 1],
        [1, 1, 1, 1]])
t.max(x,1)[1].data:
 tensor([[1, 1, 1, 1],
        [1, 1, 1, 1]])
t.max(x,1)[1].data.numpy():
 [[1 1 1 1]
 [1 1 1 1]]
t.max(x,1)[1].data.numpy().squeeze():
 [[1 1 1 1]
 [1 1 1 1]]
t.max(x,1)[0].data:
 tensor([[ 4,  5,  6,  7],
        [12, 13, 14, 15]])
t.max(x,1)[0].data.numpy():
 [[ 4  5  6  7]
 [12 13 14 15]]
t.max(x,1)[0].data.numpy().squeeze():
 [[ 4  5  6  7]
 [12 13 14 15]]

从输出结果看,

  1. t.max(x):依然是从x中取出最大的一个值。
  2. t.max(x,1):输出
    [[ 4,  5,  6,  7],
    [12, 13, 14, 15]],因为此时有两个维度,每个维度上有两行四列的数据,所以1表示行,即取出每个维度上每个行的最大值。[ 4, 5, 6, 7]是第一个维度中的最大值所在的行,[12, 13, 14, 15]是第二个维度中最大值所在的行。
  3. t.max(x,0):输出:
    torch.return_types.max(
    values=tensor([[ 8,  9, 10, 11],
            [12, 13, 14, 15]]),
    indices=tensor([[1, 1, 1, 1],
            [1, 1, 1, 1]]))此时,0表示是维度,x有两个维度,表示从这两个维度中取出最大值所在的维度。即[[ 8, 9, 10, 11], [12, 13, 14, 15]]。
    

假如我们想要取出每个维度中每一列中最大的元素该怎么办呢?我们只需要指定t.max(x,dim)中的dim=2就可以取出列向量了。

输入:
x = th.arange(0,16,1).view(2,2,4)
print('x:\n',x)
print('t.max(x):\n',t.max(x))
print('t.max(x,2):\n',t.max(x,2))
print('t.max(x,2)[0]:\n',t.max(x,2))
print('t.max(x,1)[0][0]:\n',t.max(x,2)[0][0])


输出:

x:
 tensor([[[ 0,  1,  2,  3],
         [ 4,  5,  6,  7]],

        [[ 8,  9, 10, 11],
         [12, 13, 14, 15]]])
t.max(x):
 tensor(15)
t.max(x,2):
 torch.return_types.max(
values=tensor([[ 3,  7],
        [11, 15]]),
indices=tensor([[3, 3],
        [3, 3]]))
t.max(x,2)[0]:
 torch.return_types.max(
values=tensor([[ 3,  7],
        [11, 15]]),
indices=tensor([[3, 3],
        [3, 3]]))
t.max(x,1)[0][0]:
 tensor([3, 7])

 

AttributeError: ‘torch.return_types.max‘ object has no attribute ‘dim‘ out1 = torch.max(out1, 1) # (batch, embedding_size) out1 = self.linear(out1) # (batch, linear_hidden_size) 抛出错误 File "/diske/Anaconda3/envs/pytorch1.4/lib/python3.7/site-packages/torch/nn/modules/module.py", line 722, in _call_impl result = self.. 阅读详情

相关推荐

PyTorch torch.max底层原理与工程避坑指南

torch.max是PyTorch中关键的张量维度聚合算子,其本质并非简单取最大值,而是遵循‘维度压缩+计算图保全’的设计原则,通过返回(values, indices)二元组支持可导、可广播、可复现的极值提取。它在分类预测、通道注意力、序列掩码和硬样本挖掘等场景中承担核心角色,但极易因dim理解偏差、keepdim误设、dtype不匹配或设备混用引发shape错乱、梯度截断、显存溢出等生产级故障。掌握其与torch.topk的分工边界、对nan_policy的支持差异及多维压缩坐标系建模方法,是构建稳定深

weixin_30421809的博客 478

【Pytorch】torch.max() 函数详解

本文介绍了【Pytorch】中的 torch.max() 函数

weixin_44211968的博客 1万+

[pytorch函数合集]torch_scatter.scatter_max()

这次讲解的函数是scatter_max(),该函数有4个参数,其中前三个分别为,(1)将要被操作的目标数组arr1(2)将arr1数组进行分组的数组arr2(3)设定操作数组arr1哪个维度的参数dim(4)显示几组数据的参数dim_size。

qq_43675321的博客 1537

torch.max

torch.max(input)→ Tensor 返回输入tensor中所有元素的最大值 a = torch.randn(1, 3)>>0.4729 -0.2266 -0.2085 torch.max(a)>>0.4729 torch.max(input,dim,keepdim=False,out=None) -> (Tensor,...

weixin_30914981的博客 1200

【torch.argmax与torch.max详解】

方式一,即不指定dim时,默认将张量展开成一维张量,然后返回对应的下标;方式二,即指定dim时,沿着指定的dim维进行选择,输出结果由剩下的维度组成,比如原始维度为H,W,若指定dim=0(即H维),则输出结果由W个元素构成;2)如果有多个最大值则返回第一个最大值的下标;3)返回torch.max函数指定dim时返回的第二个值;

NorthSmile的博客 4163

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.

qq_26742269的博客 5344

【笔记】torch.max()用法:单个tensor 不指定维度;单个tensor指定维度;两个tensor进行广播(相同位置进行比较)

官网:https://pytorch.org/docs/stable/torch.html#torch.max torch.max()和torch.min()是比较tensor大小的函数。两者用法相同,所以就总结了一个。 (1)不指定比较维度:torch.max(input) x = torch.rand(1,3) print(x) print(torch.min(x)) y = torch.rand(2,3) print(y) print(torch.min(y)) ou...

nyist_yangguang的博客 899

打包可以在Hadoop 3.3.1和Hive 3.1.2上使用的Tez 0.10.1 minimal

编译打包可以在Hadoop 3.3.1和Hive 3.1.2上使用的Tez 0.10.1

qq_42013533的博客 2618

Pytorch中常见的聚合函数

函数汇总 torch.mean() 返回平均值 torch.sum() 返回总和 torch.prod() 计算所有元素的积 torch.max() 返回最大值 torch.min() 返回最小值 torch.argmax() 返回最大值排序的索引值 torch.argmin() 返回最小值排序的索引值 ...

weixin_43869605的博客 916

C#实现串口通讯程序

1、自动获取本地串口。2、根据传入串口基本属性参数打开串口。3、串口数据的发送接收功能(ASCII和HEX格式)。4、ASCII和HEX相互转换。csharp体验AI代码助手代码解读复制代码[Category("UserProperty")] [Description("轮廓半径")] public int Radius { get => radius;

2401_89221445的博客 1767

【机械臂算法】机械臂动力学参数辨识仿真

本文以puma560m机械臂为例子进行动力学参数辨识的讲解,puma560m可以在robotic toolbox中找到,这里以它真实机械臂对他的动力学参数进行辨识。此外这里还有要说的是,机械臂参数辨识其实是一个系统工程,其中和系统的机械、电子、嵌入式都有着很深的联系,并不是仿真这么简单的。

vrijheid的博客 7836

张量的部分操作

torch.pow(): 对输入张量的每个元素进行幂次运算: a = torch.randint(1,6,(2, 3)) print(a) print(torch.pow(a,2)) 输出: unsqueeze(): 维度扩增,对张量的某一维上增加一维: a = torch.randint(1,6,(2, 3)) print(a) print(a.unsqueeze(1)) print(a.unsqueeze(1).shape) 输出: view(): 改变张量的维度,可以将一

Daisymanman的博客 496

LM Studio 模型加载与转换实战指南:从GGUF格式到本地部署

本文提供了使用LM Studio加载与转换GGUF格式大语言模型的完整实战指南。详细阐述了为何GGUF格式是本地部署的最佳选择,并逐步指导用户如何将非GGUF模型(如Transformers格式)转换为GGUF格式,以及在LM Studio中进行加载、配置GPU卸载等关键优化,最终实现流畅的本地离线对话体验。

weixin_29061425的博客 922

Pytorch基础函数(三)基本数学函数(1)——max()与min()函数(对dim参数的详解)

这篇博客介绍两个基本的数学函数,max()与min()两个。从函数名就可以看出这两个函数的作用: max():查找最大值 min():查找最小值 笔者一开始遇到这两个函数,感觉这两个简单函数对Tensor(张量)的操作还是有一些弯弯绕。我们来梳理一下,梳理出来就会清楚很多。 一、max()函数 函数定义:torch.max(input, dim, max=None, max_indice...

ADwenwen的博客 9656

ESD镜像解密与转换全攻略:从esd-decrypter到WinNTSetup的完整流程

本文详细解析了ESD镜像的加密特性与压缩优势,并提供了从解密到转换的完整实战指南。核心步骤包括使用esd-decrypter工具解密ESD文件为WIM格式,以及如何结合WinNTSetup进行灵活的系统安装或进一步封装为可引导的ISO镜像,帮助用户高效处理官方Windows安装镜像。

weixin_29207439的博客 452

U盘插入电脑时发出声音但不显示——编程解决方案

以上是一些常见的编程解决方案,帮助您解决U盘插入电脑时发出声音但不显示的问题。请注意,这些解决方案可能因不同的情况而略有不同,因此请根据您的具体情况进行调整和尝试。当您将U盘插入电脑时,如果您听到了连接声音,但是U盘却没有在文件资源管理器或桌面上显示出来,这可能是由于一些常见问题导致的。U盘的文件系统格式可能与您的计算机不兼容,导致无法正确识别。如果输出显示U盘的文件系统格式与您的计算机不兼容,您可以尝试重新格式化U盘或使用其他兼容的文件系统格式。其中,X是U盘的磁盘编号,Y是您想要分配给U盘的盘符。

ByteEchoX的博客 2464

Pytorch学习-torch.max()和min()深度解析

Pytorch学习-torch.max和min深度解析max的使用dim参数理解二维张量使用max()三维张量使用max()小例子 max的使用 参考链接: 参考链接: 对于tensorA和tensorB: 1)torch.max(tensorA) 返回tensor中的最大值 2)torch.max(tensorA,dim) 返回指定维度的最大数和对应下标 3)torch.max(tensorA,tensorB) 比较tensorA和tensorB相对较大的元素 dim参数理解 搞清楚dim参数 第0维

努力学习的! 1845

数据处理和分析之数据预处理:数据离散化

在某些情况下,根据业务知识或数据特性,我们可能需要自定义离散化的区间。例如,对于年龄特征,我们可能更关心儿童、青少年、成人和老年人这几个阶段,因此可以自定义这些区间。等宽离散化:将数据范围分成等宽的区间。等频离散化:将数据分成包含相同数量观测值的区间。聚类离散化:使用聚类算法(如K-means)来确定离散化区间。自定义区间离散化:根据领域知识或数据特性手动定义区间。# 自定义区间离散化示例# 假设我们根据业务理解,将年龄分为青年、中年和老年三个阶段。

2401_87715305的博客 935

三维张量的torch.max(), torch.min()中参数dim解释

以torch.max()为例,构建一个三维张量, import torch import numpy as np import random pra = torch.rand(2,3,4) print(pra,pra.shape) a0, predicted0 = torch.max(pra.data, 0) a1, predicted1 = torch.max(pra.data, 1) a2, predicted2 = torch.max(pra.data, 2) print("a0 = ",a0

Gao_suo的博客 1963

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Pytorch函数1 torch.max\ torch.min\ torch.squeeze\ torch.unsqueeze\ torch.rand \randn \randint

Pytorch函数1 torch.max\ torch.min\ torch.squeeze\ torch.unsqueeze\ torch.rand \randn \randint

m0_49447595的博客 1753

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PyTorch:torch.clamp()用法详解

函数定义: torch.clamp(input, min, max, out=None) 作用:限幅。将input的值限制在[min, max]之间,并返回结果。out (Tensor, optional) – 输出张量,一般用不到该参数。 举例说明: import torch a = torch.arange(9).reshape(3, 3) # 创建3*3的tensor b = torch.clamp(a, 3, 6) # 对a的值进行限幅,限制在[3, 6] print('a

Flag_ing的博客 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

numpy和torch函数使用

numpy和torch的函数使用

deep_love1314的博客 2114

Pytorch min函数详解

整了半天,不确定定义在哪个文件,看起来比较像这个。 C:\Users\Administrator\.PyCharm2018.2\system\python_stubs\1756426084\torch\_C\_TensorBase.py def min(self, dim=None, keepdim=False): # real signature unknown; restor...

w55100的博客 9385

对 torch 中 dim 的总结和理解

pytorch 中,使用到 dim 参数的 api 都是跟集合有关的,比如 max(), min(), mean(), softmax() 等。当指定某个 dim 时,那么表示使用该维度的集合进行集合运算,比如一个 tensor 的 shape 为 (3, 4, 5),分别对应的 dim 如下所示 dim shape 0 3 1 4 2 5 当使用 max(dim=1) 时,表示使用第二个维度中全部四个元素中的每个元素参与求最大值计算,计算后的 shape 变为 (3,5),因为

拾贝壳 4339

torch.histc深入理解

用于统计落入区域的值的个数。inputbins=100min=0max=0out=None→Tensorinput (Tensor) – the input tensor.输入的值,统计各个数出现了多少次

zxyOVO的博客 1490

PyTorch torch.max 三重身份:数值提取、维度控制与梯度路由

torch.max 是 PyTorch 中最易被低估的核心张量操作之一,它远不止于‘找最大值’——本质上是融合数值计算、形状变换与自动微分控制的复合算子。其原理基于沿指定维度压缩张量并返回极值与索引,同时保持计算图完整性;技术价值体现在精准控制梯度流向、避免维度错位及支撑可微分决策逻辑;广泛应用于图像分类预测解码(如 dim=1 提取类别置信度)、NLP 序列标注(dim=-1 获取 token 标签)、对比学习 hard mining(利用 values 可导性)等关键场景。深入理解 torch.max

aoe41606的博客 418
上一篇: win10+cudn9+anaconda4.6.11(python3.7)下pysot环境部署
下一篇: Tensorflow之softmax应用实例
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值