Pytorch中torch.argmax()函数使用及说明
作者:cv_lhp 发布时间:2021-11-24 14:49:31
torch.argmax()函数解析
1. 官网链接
torch.argmax(),如下图所示:
2. torch.argmax(input)函数解析
torch.argmax(input) → LongTensor
将输入input张量,无论有几维,首先将其reshape排列成一个一维向量,然后找出这个一维向量里面最大值的索引。
3. 代码举例
import torch
x = torch.randn(3,4)
y = torch.argmax(x)#对应于x中最大元素的索引值
x,y
输出结果如下:
import torch
x = torch.randn(3,4)
y = torch.argmax(x)#对应于x中最大元素的索引值
x,y
4. torch.argmax(input,dim) 函数解析
torch.argmax(input, dim, keepdim=False) → LongTensor
函数返回其他所有维在这个维度上面张量最大值的索引。
torch.argmax()函数中dim表示该维度会消失,可以理解为最终结果该维度大小是1,表示将该维度压缩成维度大小为1。
举例理解:
对于一个维度为(d0,d1) 的矩阵来说,dim=1表示求每一行中最大数的在该行中的列号,最后得到的就是一个维度为(d0,1) 的二维矩阵,最终列这一维度大小为1就要消失了,最终结果变成一维张量(d0);
dim=0表示求每一列中最大数的在该列中的行号,最后我们得到的就是一个维度为(1,d1) 的二维矩阵,结果行这一维度大小为1就要消失了,最终结果变成一维张量(d1)。
因此,我们想要求每一行最大的列标号,我们就要指定dim=1,表示我们不要列了,保留行的size就可以了。
假如我们想求每一列的最大行标,就可以指定dim=0,表示我们不要行了,求出每一列的最大值的下标,最后得到(1,d1)的一维矩阵。
5. 代码举例
5.1 输入二维张量torch.Size([3, 4]),dim=0表示将dim=0这个维度大小由3压缩成1,然后找到dim=0这三个值中最大值的索引,这个索引表示dim=0行索引标号,结果张量维度变为torch.Size([4])。
import torch
x = torch.randn(3,4)
y = torch.argmax(x,dim=0)#dim=0表示将dim=0这个维度大小由3压缩成1,然后找到dim=0这三个值中最大值的索引,这个索引表示dim=0行索引标号
x,x.shape,y,y.shape
输出结果如下:
(tensor([[ 2.6347, 0.6456, -1.0461, -1.5154],
[-1.3955, -1.2618, -0.5886, -0.5947],
[-1.5272, -2.0960, 0.9428, -0.9532]]),
torch.Size([3, 4]),
tensor([0, 0, 2, 1]),
torch.Size([4]))
5.2 输入二维张量torch.Size([3, 4]),dim=1表示将dim=1这个维度大小由4压缩成1,然后找到dim=1这四个值中最大值的索引,这个索引表示dim=1列索引标号,结果张量维度变为torch.Size([3])。
import torch
x = torch.randn(3,4)
y = torch.argmax(x,dim=1)#dim=1表示将dim=1这个维度大小由4压缩成1,然后找到dim=1这四个值中最大值的索引,这个索引表示dim=1列索引标号
x,x.shape,y,y.shape
输出结果如下:
(tensor([[ 0.1549, 0.4331, 0.3575, 1.1077],
[ 2.0233, 2.0085, -0.6101, -1.8547],
[-0.5101, -0.4052, 0.3458, -0.7802]]),
torch.Size([3, 4]),
tensor([3, 0, 2]),
torch.Size([3]))
5.3 输入三维张量torch.Size([2, 3, 4]),dim=0表示将dim=0这个维度大小由2压缩成1,然后找到dim=0这两个值中最大值的索引,这个索引表示dim=0维索引标号。
dim=0,即将第一个维度消除,也就是将两个[34]矩阵只保留一个,因此要在两组中作比较,即将上下两个[34]的矩阵分别在对应的位置上比较大小,结果矩阵张量维度变为torch.Size([3, 4])。
import torch
x = torch.randn(2,3,4)
y = torch.argmax(x,dim=0)#dim=0表示将dim=0这个维度大小由2压缩成1,然后找到dim=0这两个值中最大值的索引,这个索引表示dim=0维索引标号
x,x.shape,y,y.shape
输出结果如下:
(tensor([[[-1.4430, 0.0306, -1.0396, 0.1219],
[ 0.1016, 0.0889, 0.8005, 0.3320],
[-1.0518, -1.4526, -0.4586, -0.1474]],
[[ 1.2274, 1.5806, 0.5444, -0.3088],
[-0.8672, 0.3843, 1.2377, 2.1596],
[ 0.0671, 0.0847, 0.5607, -0.7492]]]),
torch.Size([2, 3, 4]),
tensor([[1, 1, 1, 0],
[0, 1, 1, 1],
[1, 1, 1, 0]]),
torch.Size([3, 4]))
5.4 输入三维张量torch.Size([2, 3, 4]),dim=1表示将dim=1这个维度大小由3压缩成1,然后找到dim=1这三个值中最大值的索引,这个索引表示dim=1维索引标号。
dim=1,即将第二个维度消除(纵向压缩成一维),结果矩阵张量维度变为torch.Size([2, 4])。
import torch
x = torch.randn(2,3,4)
y = torch.argmax(x,dim=1)#dim=1表示将dim=1这个维度大小由3压缩成1,然后找到dim=1这三个值中最大值的索引,这个索引表示dim=1维索引标号
x,x.shape,y,y.shape
输出结果如下:
(tensor([[[-1.7136, 0.5528, 0.5171, 1.2978],
[ 1.0250, -0.2687, 0.6727, -0.2013],
[ 0.1366, -1.0563, 0.1965, 1.5303]],
[[-0.0048, 1.6265, -1.0341, -0.3994],
[ 1.5536, 0.9739, -0.0913, 0.0889],
[-0.6703, -0.9099, -0.6400, -0.1807]]]),
torch.Size([2, 3, 4]),
tensor([[1, 0, 1, 2],
[1, 0, 1, 1]]),
torch.Size([2, 4]))
5.5 输入三维张量torch.Size([2, 3, 4]),dim=2表示将dim=2这个维度大小由4压缩成1,然后找到dim=2这四个值中最大值的索引,这个索引表示dim=2维索引标号。dim=2,即将第三个维度消除(横向压缩成一维),结果矩阵张量维度变为torch.Size([2, 3])。
import torch
x = torch.randn(2,3,4)
y = torch.argmax(x,dim=2)#dim=2表示将dim=2这个维度大小由4压缩成1,然后找到dim=2这四个值中最大值的索引,这个索引表示dim=2维索引标号
x,x.shape,y,y.shape
输出结果如下:
(tensor([[[-0.3493, 0.8838, 0.5876, -0.3967],
[-1.5795, 2.6964, 0.7266, 0.3517],
[-0.6949, -1.4385, -0.0993, 0.1679]],
[[-0.4924, -0.8955, 0.5511, 0.6287],
[ 0.2338, -0.5787, -0.2081, -1.3032],
[ 0.6429, 0.0949, 0.3319, -0.8551]]]),
torch.Size([2, 3, 4]),
tensor([[1, 1, 3],
[3, 0, 0]]),
torch.Size([2, 3]))
来源:https://blog.csdn.net/flyingluohaipeng/article/details/125099214
猜你喜欢
- 1. 简介在windows系统上,重复性的操作可以用Python脚本来完成,其中常用的模块是win32gui、win32con、win32a
- 1.在python中excel的简单读写操作,推荐使用xlrd(特别是读操作) 2.到http://pypi.python.org/pypi
- using System;using System.Collections.Generic;using System.Linq;using
- SQL Server具有强大的复制功能,除了将数据和数据库对象从一个数据库复制并准确分发的另一个数据库中,还要实行数据库之间的同步。SQL
- 本文实例讲述了Python实现的将文件每一列写入列表功能。分享给大家供大家参考,具体如下:# -*- coding: utf-8 -*-#!
- 如果你是一位前端开发工程师,对“跨平台”一词应该不会感到陌生。像常见的前端框架:比如React、Vue、Angular,它们可以做网页端,也
- 在Python里面,函数可以作为参数传入一个函数,函数也可以复制给变量,通过变量调用函数。装饰器可以扩展一个函数的功能,为函数做一个装饰器注
- 1.python版本与matlab版本的对应关系在MAC中安装了Anaconda3,其中自带的python版本为3.8,通过python版本
- 本文实例讲述了Python实现判断一个整数是否为回文数算法。分享给大家供大家参考,具体如下:第一个思路是先将整数转换为字符串,再将字符串翻转
- 一、Excel环境配置 服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:1.Win9x+PWS+Office2.Wi
- 工作中需要根据某个应用程序具体吃了多少内存来决定执行某些操作,所以需要写个小工具来模拟应用程序使用内存情况,下面是我写的一个Python脚本
- 一、Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母版页@RenderBody当创建基于_Layout
- 本文介绍使用python+pyqt5开发桌面程序的一个可视化UI视图布局一、环境包的安装1、如果还不知道虚拟环境的可以参考,或者直接使用pi
- 利用numpy库(缺点:有缺失值就无法读取)读:import numpy my_matrix = numpy.loadtxt(open(&q
- 1.批量处理所谓的批处理就是批量处理cmd里面的命令。python要想实现批处理功能需要导入os库,然后利用批处理的命令为os.system
- 看代码:Vue提供了强大的前端开发架构,很多时候我们需要判断数据对象是否为空,使用typeof判断是个不错选择,具体代码见图。补充知识:vu
- 前言前端小伙伴们平常在开发过程中文件上传是经常遇到的一个问题,也许你能够实现相关的功能,但是做完后回想代码实现上是不是有点"力不从
- 概述我们可以将此归咎于许多原因,但这肯定不仅仅是因为 PHP 生态系统缺乏适当的测试工具。在本文中,我想向您展示一个简单的设置,用于项目的基
- 假设mysql安装在c:盘,mysql数据库的用户名是root,密码是123456,数据库名是database_name,在d:盘根目录下面
- 编号标准宗地编码(landCode)所在区段编码(sectCode)1131001BG001G0012131001BG002G0013131