Tensor 基本操作2 理解 tensor.max 操作,沿着给定的 dim 是什么意思 | PyTorch 深度学习实战

server/2025/1/24 3:46:50/

前一篇文章,Tensor 基本操作1 | PyTorch 深度学习实战

本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started

目录

  • Tensor 基本操作
    • torch.max
      • 默认
      • 指定维度

Tensor 基本操作

torch.max

torch.max 实现降维运算,基于指定的 dim 选取子元素的最大值。

默认

    a = torch.randn(1, 3)print(a)b = torch.max(a)print(b)

Result:

tensor([[-0.5284, -1.5308, -0.2267]])
tensor(-0.2267)

指定维度

指定哪个维度,就是减去第几维:

假如有一个 Tensor Shape 是 AxBxCxD,那么有对应关系

A(dim0),B(dim1),C(dim2),D(dim3)。

假如沿着 dim = 0,则得到矩阵为 BxCxD,其中降维后的 D 中每个值,是 0 维 A 个原始元素最大的值。
假如沿着 dim = 1,则得到矩阵为 AxCxD,其中降维后的 D 中每个值,是 1 维 B 个原始元素最大的值。

    a = torch.randn(4, 3, 2, 5)      # 声明 4x3x2x5 的 Tensorprint(a)max, max_indices = torch.max(a, 1) # 沿着第 1 维运算,得到的 max 是一个新的 Tensor, shape(4x2x5)# 其中,新的 tensor 的第 2 维 有 5 个元素,每个元素是原来第 1 维的 3 个元素的对应位置的最大者print(max)print(max_indices)

运算过程:
在这里插入图片描述
运算的效果,就是将原来第 1 维的 三个 元素通过取最大值的方式消解了,剩下了 4x2x5 的新的 Tensor.

Detail result:

tensor([[[[ 1.6156, -0.3533,  0.5970,  1.0218,  0.3952],   # 这是一个 4x3x2x5 的 Tensor[ 0.2581, -1.3161,  0.3243, -0.9350,  0.6976]],[[-0.6239, -0.8732, -0.2739,  1.3695,  0.9614],[ 3.0117, -2.3211,  2.2359, -1.5275,  1.0230]],[[ 0.2711, -0.5295, -0.9168, -0.9496, -0.5264],[-0.0418,  1.4757, -0.3033, -0.5069, -0.6909]]],[[[-0.3262,  1.0079, -0.2975, -0.9859,  1.6166],[ 1.2771, -0.0456,  0.1857,  0.3275,  0.4207]],[[ 0.2362, -0.0821, -0.0105,  1.7645,  0.0989],[-0.1281, -1.0425, -0.5537, -0.0339,  1.3466]],[[-1.3060,  1.0920, -0.9126, -0.3850, -0.7273],[-0.0519, -0.3566, -0.5489, -3.6990,  0.6110]]],[[[ 1.2422, -0.2393,  0.4786,  0.6107, -0.0252],[ 0.2563, -0.4030,  1.8649,  0.3462,  0.7197]],[[-0.6126,  0.7801, -0.6078,  0.1391, -0.8297],[-1.8600, -0.2814,  0.2408, -0.9058, -0.0186]],[[ 1.6242,  1.5925, -0.0591, -0.0107, -1.8332],[ 0.9812, -3.2381, -1.7055, -1.3484, -1.3409]]],[[[-0.3392, -0.4359, -0.0451,  2.4718,  1.9482],[ 0.6110, -0.5543,  0.3466,  0.4199, -0.0319]],[[-0.2322, -0.8355, -1.0138,  0.9620, -0.4311],[-0.7799,  0.8414,  0.9293, -0.0322,  0.1638]],[[ 0.6299,  0.7966,  1.8616, -1.8382, -0.1141],[ 1.2325, -0.0446, -0.7722,  1.2540, -1.8609]]]])
tensor([[[ 1.6156, -0.3533,  0.5970,  1.3695,  0.9614],     # 取 Max 之后得到的新的 Tensor[ 3.0117,  1.4757,  2.2359, -0.5069,  1.0230]],[[ 0.2362,  1.0920, -0.0105,  1.7645,  1.6166],[ 1.2771, -0.0456,  0.1857,  0.3275,  1.3466]],[[ 1.6242,  1.5925,  0.4786,  0.6107, -0.0252],[ 0.9812, -0.2814,  1.8649,  0.3462,  0.7197]],[[ 0.6299,  0.7966,  1.8616,  2.4718,  1.9482],[ 1.2325,  0.8414,  0.9293,  1.2540,  0.1638]]])
tensor([[[0, 0, 0, 1, 1],[1, 2, 1, 2, 1]],[[1, 2, 1, 1, 0],[0, 0, 0, 0, 1]],[[2, 2, 0, 0, 0],[2, 1, 0, 0, 0]],[[2, 2, 2, 0, 0],[2, 1, 1, 2, 1]]])

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

相关文章

25.1.22学习内容

声明:该博文所有图片皆为截图笔记,仅为向所在组织证明今日所学内容,无任何盈利行为。

接口 V2 完善:基于责任链模式、Canal 监听 Binlog 实现数据库、缓存的库存最终一致性

🎯 本文介绍了一种使用Canal监听MySQL Binlog实现数据库与缓存最终一致性的方案。文章首先讲解了如何修改Canal配置以适应订单表和时间段表的变化,然后详细描述了通过责任链模式优化消息处理逻辑的方法,确保能够灵活应对不同数据表的更新需求…

ssm-mybatisPlus学习笔记

注意!mybatisPlus只能够进行单表操作,其他的仍需要mybatis 1.快速入门 编写启动类 MapperScan("com.atguigu.mapper") SpringBootApplication public class MainApplication {public static void main(String[] args) {SpringApplication.r…

从零搭建一套远程手机的桌面操控和文件传输的小工具

从零搭建一套远程手机的桌面操控和文件传输的小工具 --ADB连接专题 一、前言 前面的篇章中,我们确定了通过基于TCP连接的ADB控制远程手机的操作思路。本篇中我们将进行实际的ADB桥接的具体链路搭建工作,从原理和实际部署和操作层面上,从零…

Excel 实现文本拼接方法

1. 使用 & 运算符 这是最常见和简单的拼接方法。你只需使用 & 来连接多个文本单元格或文本字符串。 示例公式: A1 & B1这个公式会将 A1 和 B1 单元格中的文本合并为一个字符串。 如果你希望在文本之间加入分隔符(如空格、逗号等&#xf…

verilog笔记1

1. 阻塞赋值 阻塞赋值,顾名思义即在一个 always 块中,后面的语句会受到前语句的影响,具体来说就是在同一个always 中,一条阻塞赋值语句如果没有执行结束,那么该语句后面的语句就不能被执行,即被“阻塞”。也…

Linux——线程条件变量(同步)

Linux——多线程的控制-CSDN博客 文章目录 目录 文章目录 前言 一、条件变量是什么? 1、死锁的必要条件 1. 互斥条件(Mutual Exclusion) 2. 请求和保持条件(Hold and Wait) 3. 不可剥夺条件(No Preemption&…

Nginx 反向代理与负载均衡配置实践

一、引言 在当今互联网架构中,Nginx作为一款高性能的HTTP和反向代理服务器,广泛应用于各种场景,为众多网站和应用提供了强大的支持。它能够高效地处理大量并发请求,实现反向代理与负载均衡功能,显著提升系统的性能、可…