关于pytorch中的dim的理解

今天碰到一个代码看起来很简单,但是细究原理又感觉好像不太通不太对劲,就是多维tensor数据的操作,比如:y.sum(dim=2),乍一看很简单数据相加操作,但是仔细一想,这里在第3维度的数据到底是横向相加还是纵向相加,带着疑问实验几次就明白了。

首先给个完整的例子:

python 复制代码
import  torch

y = torch.tensor([
     [
       [1, 2, 3],
       [4, 5, 6]
     ],
     [
       [1, 2, 3],
       [4, 5, 6]
     ],
     [
       [1, 2, 3],
       [4, 5, 6]
     ]
   ])

print(y.sum(dim=2))

这里的y.shape = (3, 2, 3),三个维度的数据,所以dim可以是0~2也可以是-1~-3。我们每个维度都进行操作一遍就清楚了。

  • 当dim=0时,相当于有3个二维的向量进行相加,结果还是一个二维向量(对应位置相加):

    y.shape = (3, 2, 3) ---> y.shape = (2, 3)
  • 当dim=1时,相当于有2个一维的向量进行相加×3,结果是1个一维向量×3则还是一个二维向量:

    y.shape = (3, 2, 3) ---> y.shape = (3, 3)
  • 当dim=2时,相当于有3个数值进行相加×2×3,结果两个值组成一维向量,三个一维向量组成二维向量:

    y.shape = (3, 2, 3) ---> y.shape = (3, 2)

其他的数据操作也是这样类似的思想。

总结:从中可以看出只要对一个n维度的数据的其中一维进行操作的话,得到的结果会是n-1维的向量,shape则是去掉那一维的个数。

相关推荐
劲墨难解苍生苦9 分钟前
spring ai alibaba mcp 开发demo
java·人工智能
程序员爱钓鱼19 分钟前
Python编程实战——Python实用工具与库:Pandas数据处理
后端·python·ipython
程序员爱钓鱼24 分钟前
Python编程实战——Python实用工具与库:Numpy基础
后端·python·面试
程序员霸哥哥26 分钟前
从零搭建PyTorch计算机视觉模型
人工智能·pytorch·python·计算机视觉
草莓熊Lotso41 分钟前
Linux 基础开发工具入门:软件包管理器的全方位实操指南
linux·运维·服务器·c++·人工智能·网络协议·rpc
IT_陈寒1 小时前
Vue 3性能优化实战:7个关键技巧让我的应用加载速度提升50%
前端·人工智能·后端
【赫兹威客】浩哥1 小时前
基于 YOLO11+PyQt6+OpenCV 的智能水果检测系统设计与实现
人工智能·opencv·计算机视觉
晚秋大魔王1 小时前
基于python的jlink单片机自动化批量烧录工具
前端·python·单片机
胖哥真不错1 小时前
Python基于PyTorch实现多输入多输出进行CNN卷积神经网络回归预测项目实战
pytorch·python·毕业设计·课程设计·毕设·多输入多输出·cnn卷积神经网络回归预测
RPA机器人就用八爪鱼1 小时前
RPA:企业数字化转型的高效自动化利器
人工智能