pytorch的gather函数的一些粗略的理解

Pytorch函数——torch.gather详解 对pytorch中torch.gather进行了解释 阅读详情

pytorch的gather函数的一些理解

先给出官方文档的解释,我觉得官方的文档写的已经很清楚了,四个参数分别是input,dim,index,out,输出的tensor是以index为大小的tensor。
在这里插入图片描述
其中,这就是最关键的定义

out[i][j][k] = tensor[index[i][j][k]][j][k]  # dim=0
out[i][j][k] = tensor[i][index[i][j][k]][k]  # dim=1
out[i][j][k] = tensor[i][j][index[i][j][k]]  # dim=3

主要解释一下dim,dim=0的时候,把index的元素放入行进行索引,有一点需要注意的是,参数index的tensor格式是除了第1维也就是行那一维之外,其他维的格式需与input保持一致!下面给个例子

import torch 

a = torch.arange(0, 16).view(4,4)

index = torch.LongTensor([[0,1,2,3]])

b = a.gather(0, index)
print(a)
print(index)
print(b)

#形象的理解就是在每一列的第index[]上进行索引
for j in range(4):
    print(a[index[0][j]][j].item())
--------------------------------------------------------------------
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])
tensor([[0, 1, 2, 3]])
tensor([[ 0,  5, 10, 15]])
0
5
10
15

dim = 1的时候,把index的元素放入列进行索引,有一点需要注意的是,参数index的tensor格式是除了第2维也就是列那一维之外,其他维的格式需与input保持一致!下面给个例子

import torch 

a = torch.arange(0, 16).view(4,4)

index = torch.LongTensor([[0],[1],[2],[3]])

b = a.gather(1, index)
print(a)
print(index)
print(b)

#形象的理解就是在每一行的第index[]列上进行索引
for j in range(4):
    print(a[j][index[j][0]].item())
--------------------------------------------------------------------
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])
tensor([[0],
        [1],
        [2],
        [3]])
tensor([[ 0],
        [ 5],
        [10],
        [15]])
0
5
10
15

本人对矩阵的一些概念还有一些模糊不清,以上就是我的一些理解,希望有大佬可以一起交流一下,pytorch 的张量一开始很难处理清楚,还需慢慢来。

PyTorch中torch.gather()函数 输入index的shape等于输出value的shape输入index的索引值仅替换该index中对应dim的index值最终输出为替换index后在原tensor中的值。 阅读详情

相关推荐

Pytorch 中 gather 函数讲解

文章目录官方解读分析小例子 官方解读分析 该函数的功能为:沿着 dim 指定的轴收集值 torch.gather(input, dim, index, out=None) → Tensor Gathers values along an axis specified by dim. For a 3-D tensor the output is specified by: out[i][j][k] = input[index[i][j][k]][j][k] # dim=0

qq_52852138的博客 1872

【PyTorch】Torch.gather()用法详细图文解释

Torch.gather()用法的详细图文解释,通过比喻理解。

Mocode的博客 1万+

深度学习非线性治理:分段逼近的工程实践与硬件部署

非线性变换是深度学习模型表达能力的核心,但传统光滑函数(如Sigmoid、Swish)常引发梯度消失、计算开销大、硬件兼容性差等工程问题。分段逼近通过将复杂非线性分解为多个局部线性或二次片段,在保证可导性与数值稳定性的同时,显著提升训练收敛性、推理效率与部署鲁棒性。其技术价值在于以‘可控简化’替代‘全局拟合’,天然适配TensorRT、NPU等加速器对分段线性/二次函数的原生优化。典型应用场景包括边缘AI低延迟推理、工业时序预测中的分布漂移适应、以及量化敏感任务下的精度保持。本文聚焦Dynamic Piec

cuyi7076的博客 367

pytorch中的gather函数

pytorch中的gather函数比较难以理解,下面用2D的例子解释如下: import torch input = torch.arange(16).view(4, 4) """ [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]] """ 首先要指出的是input和index必须有相同的维度,但是各个维度的大小(shape)可以不一样。比如input是一个三维矩阵,则tensor也必须是一个三位矩阵。 对于d != dim的维度

Abraham Ben 3217

Qwen3VL在RK3588端侧部署全流程:从PyTorch到RKNN工程闭环

多模态大模型(如Qwen3VL)在边缘设备(如RK3588)上的落地,本质是将动态、高精度的PyTorch模型重构为静态、量化、NPU友好的RKNN格式。其核心原理在于绕过CUDA依赖,通过结构解耦(ViT与LLM分离)、无动态算子的图固化、advanced_quantized-i8高级量化及ION内存协同调度,实现视觉语言联合推理的端侧可行化。该技术路径显著提升工业质检、设备巡检等低延迟场景的本地化AI能力,避免云端回传延迟与带宽瓶颈,支撑真正离线、实时、可量产的边缘智能终端部署。

weixin_30475039的博客 330

科研级AI实战课:从长沙气候分析到NeRF重建的工程链

人工智能工程能力的本质,是将算法原理、数据特性与硬件约束在真实场景中精准对齐。本文聚焦科研级AI项目落地的核心链条——从时间序列数据清洗、可解释性建模,到前沿神经渲染(NeRF)的全栈实现,强调PyTorch原生开发、数值稳定性控制、时间序列防泄露预处理等关键技术细节。区别于通用AI入门课,内容深度覆盖气象数据特征工程、地铁刷卡时空图建模、CUDA环境严控、梯度裁剪与分层采样等高频实践痛点,直击高校科研与产业落地中‘代码跑不通、结果不可复现、结论难归因’三大瓶颈。适合需交付可答辩、可发论文、可部署模型的本科

432

PyTorch工程化实践:从动态图到分布式部署的完整指南

深度学习框架作为现代人工智能应用的核心基础设施,其设计原理直接影响着模型开发与部署的效率。PyTorch以其动态计算图机制著称,为研究和原型开发提供了极大的灵活性。在工程实践中,动态图需要转换为静态图以获得更高的推理性能和跨平台部署能力,这涉及到TorchScript和JIT编译技术。同时,随着模型规模的增长,分布式训练成为处理海量数据和参数的必备方案,DistributedDataParallel通过多进程和梯度桶优化实现了高效的并行计算。这些技术共同支撑了从实验到生产的完整链路,帮助开发者构建健壮、可扩

weixin_33912246的博客 358

SegFormer v2实操指南:从论文公式到可运行代码

视觉Transformer(ViT)是当前计算机视觉的核心架构,其高效部署依赖对模型结构、训练策略与硬件适配的深度理解。Token-Adaptive Downsampling作为轻量级图像分割的关键创新,本质是通过动态重要性评分实现计算资源的智能重分配,而非简单精度妥协。该技术显著降低FLOPs与显存占用,支撑边缘设备实时推理,在工业质检、医疗影像和自动驾驶等场景具备强落地价值。本文以SegFormer v2为典型范例,聚焦PyTorch实操复现,覆盖公式推演、位置编码插值、自适应下采样模块实现及训练参数调

chenzhuofei4155的博客 311

从零理解 AI Infra:大模型时代最值得补齐的工程能力

AI Infra,全称 AI Infrastructure,可以理解为支撑 AI 模型从训练到推理再到线上服务的基础设施系统。它不是一个单独的软件,也不是某个框架,而是一整套技术体系。算力硬件:GPU、NPU、TPU、AI ASIC、CPU、内存、网络互联编程与运行时:CUDA、ROCm、驱动、编译器、运行时库高性能算子:GEMM、Attention、Softmax、LayerNorm、Embedding 等。

qq_37854244的博客 667

大模型MoE架构揭秘:为什么只用2%参数就能高效推理

混合专家(MoE)是一种突破传统稠密模型限制的稀疏化神经网络架构,其核心原理是通过动态路由机制,在每次前向传播中仅激活少量专家模块(如2–4个),实现计算量与参数规模的解耦。这种设计显著缓解显存墙和算力墙问题,提升推理效率与扩展性,同时保持强大表达能力。技术价值体现在训练稳定性增强、硬件资源利用率优化及低延迟部署可行性上。典型应用场景包括大语言模型(如GPT-4、DeepSeek-R1)、边缘AI服务与多任务联合建模。本文深入解析MoE的路由机制、负载均衡策略与PyTorch实战实现,聚焦参数经济性与稀疏激

weixin_30443075的博客 326

GLM-5.3编程模型实战:从环境部署到API集成的完整指南

大语言模型在代码生成与自动化编程领域正成为提升开发效率的关键技术。其核心原理是基于海量代码语料进行预训练,学习编程语言的语法、逻辑与模式,从而实现对开发者意图的理解与代码补全。这类技术的核心价值在于将开发者从重复性、模板化的编码任务中解放出来,显著提升软件开发的迭代速度与代码一致性。典型的应用场景包括智能代码补全、自动化测试用例生成、遗留代码解释与文档化,以及辅助代码审查与重构。本文聚焦于智谱AI最新发布的GLM-5.3开源编程模型,该模型在编程任务上实现了高达50%的性能提升。我们将深入探讨其本地部署的硬

weixin_34284188的博客 419

Focal Loss原理与实战:解决目标检测中类别不平衡问题的核心技术

在机器学习与计算机视觉领域,类别不平衡是模型训练中普遍存在的挑战,尤其在目标检测、图像分割等任务中,背景与前景样本数量悬殊会严重影响模型性能。其核心原理在于,标准交叉熵损失函数平等对待所有样本,导致大量简单负样本主导梯度更新,模型难以学习困难样本的特征。Focal Loss通过引入调制因子(1-p_t)^γ和平衡因子α,动态降低易分类样本的损失权重,迫使模型聚焦于难以分类的样本,从而提升模型在困难样本上的判别能力。这一技术价值在于,它无需复杂的采样策略,仅通过损失函数设计即可有效缓解类别不平衡,显著提升一阶

weixin_30268921的博客 472

分布式训练通信优化分层式精讲:All-Reduce、Ring-AllReduce、NCCL 与 DDP/FSDP 重叠(分层式精讲)

核心结论:通信优化不是把 All-Reduce 讲成一个“中心枢纽”,而是理解不同 collective 的通信量、延迟、拓扑和重叠边界。DDP 主要通过 gradient bucket + all-reduce overlap 提升效率;FSDP/ZeRO 通过 reduce-scatter/all-gather 降低训练状态复制;NCCL 会按拓扑和消息大小选择 ring/tree/hierarchical 等算法。默认不要手写 Ring 或激进梯度压缩,先用成熟框架和 profiler 找瓶颈。

AI浩 480

AViTS技术:自适应令牌选择如何优化生成式AI推理效率

在生成式AI领域,Transformer架构因其强大的建模能力成为主流,但其注意力机制的计算复杂度与令牌数量的平方成正比,导致处理高维数据(如图像、视频)时面临推理速度慢、显存占用高的严峻挑战。动态分辨率技术应运而生,旨在通过智能地调整计算资源的分配来平衡效率与质量。其核心原理在于识别输入数据中信息量不同的区域,并对重要区域进行精细处理,对次要区域进行粗略处理,从而实现计算量的显著降低。这项技术的核心价值在于,它能够在几乎不损失生成质量的前提下,大幅提升模型推理速度并节省显存,尤其适用于对实时性要求高或资源

weixin_33755557的博客 285

数据并行 vs 模型并行分层式精讲:DDP、FSDP、TP、PP 与混合并行

原稿表述修正后模型太大 → 数据并行通信爆炸 → 必须模型并行模型太大首先是显存问题;FSDP/ZeRO 通常是第一选择数据并行通信量 = 2×模型大小/GPU数量Ring all-reduce per-rank 约为模型并行通信通常小于数据并行不一定;TP 每层通信频繁,拓扑很关键张量并行通信量和模型大小/GPU数成正比主要和 activation/partial output 相关流水线最优 M=P-1,最大效率 0.5效率约M/(M+P-1),M 越大 bubble 越小。

AI浩 633

Proteus仿真实战:基于IIC驱动SSD1306的0.96英寸OLED显示方案解析

本文详细解析了在Proteus仿真环境中基于IIC驱动SSD1306的0.96英寸OLED显示方案。从硬件搭建、IIC接口连接、软件驱动移植到常见问题排查,提供了全面的实战指导,帮助开发者快速实现OLED显示功能并优化性能。

weixin_28724661的博客 770

GPU并行计算可视化:从黑盒到洞察,优化大模型训练性能

在深度学习与高性能计算领域,理解GPU的并行计算原理是优化模型训练与推理性能的关键。GPU通过流式多处理器(SM)和复杂的内存层次结构(如HBM、L2/L1缓存)执行海量线程,其工作状态常如黑盒般难以洞察。掌握其底层执行逻辑,对于诊断性能瓶颈、优化计算与通信效率具有重要技术价值,尤其在数据并行、张量并行等大规模分布式训练场景中。本文聚焦于通过可视化技术拆解GPU黑盒,将抽象的计算图映射为直观的硬件执行状态,帮助开发者定位如通信延迟、显存瓶颈等核心问题。通过结合Nsight Systems、PyTorch P

weixin_30399155的博客 465

MicroLogix1400编程(使用RSLogix 500 + RSLinx Classic Lite)

MicroLogix1400编程

noscallion的博客 1万+

大模型训练并行化:数据并行、张量并行与流水线并行的核心原理与混合策略

在深度学习领域,模型规模的爆炸式增长使得单卡训练成为瓶颈,分布式训练技术应运而生。其核心原理是通过将计算任务拆分到多个设备上协同执行,以解决显存不足和计算缓慢的问题。从技术价值看,它极大提升了训练效率,使训练千亿级参数模型成为可能。在应用场景上,分布式训练已成为大模型预训练、微调及推理的基石。具体而言,数据并行通过复制模型、分割数据批次来加速训练;张量模型并行则对巨型算子进行切分,突破单层内存限制;流水线并行让极深模型按层分组,像流水线一样处理数据。这些策略常以混合方式协同工作,例如在训练GPT-3等超大模

weixin_34060299的博客 447

NA400与昆仑通态MODBUS/TCP通讯调试说明

点击增加设备通道,弹出窗口进行设置,通道类型选择“0区输出继电器”,通道地址为1,通道个数为1,读写方式为读写。点击增加设备通道,弹出窗口进行设置,通道类型选择“4区输出寄存器”,数据类型选择“16位 无符号二进制”,通道地址为21001,通道个数为1,读写方式为读写。5.添加设备通道:双击莫迪康MODBUSTCP子设备,点击添加设备通道,根据Modbus规约地址表进行参数的设置,表格可在NAPro软件帮助中查看,如下图所示。然后可以在设备通道调试数据中观察到Q1的值为1,NW1的值678,表示通讯成功。

weixin_44281509的博客 2490

vivado安装空间与依赖要求:入门须知要点

准备安装Vivado时,需重点关注系统空间和依赖环境的配置。结合vivado安装教程,详细说明最低磁盘要求、内存配置及操作系统兼容性,帮助新手快速搭建开发环境,避免常见安装失败问题。

weixin_34725745的博客 1572

强化学习可解释性:基于敏感性分析理解智能体决策

在人工智能领域,强化学习(RL)通过智能体与环境的交互学习最优策略,已成为解决序列决策问题的核心技术。其核心原理在于通过奖励信号引导智能体探索与利用,以最大化长期累积回报。这项技术的价值在于能够处理高维状态空间和复杂动态环境,广泛应用于机器人控制、游戏AI和自动驾驶等领域。然而,传统强化学习模型常被视为“黑盒”,其内部决策逻辑难以理解,这在高风险应用场景中带来了可信度与安全性挑战。可解释人工智能(XAI)致力于解决这一问题,通过提供模型决策的透明化解释来增强信任。其中,敏感性分析作为一种动态解释方法,通过系

weixin_33898876的博客 543

【论文笔记】Beyond Low-frequency Information in Graph Convolutional Networks

文章目录1. Abstract2. Introduction低频和高频信号作用FAGCN怎么设计3. An Experimental Investigation4. Model4.1 filter定义4.2 Aggregation4.3 Problems of signal combination4.4 Spatial vision of FAGCN4.5 系数αijG\alpha_{i j}^{G}αijG​4.6 模型整体框架FAGCN的表达能力实验 本文发表在AAAI-21上 论文地址:https:

Running Snail 5601
上一篇: 莫烦pytorch教程的CNN代码的一些笔记
下一篇: 求整数中出现1的个数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值