【python】30、矩阵加法 tensor.sum

news/2024/9/18 23:55:29 标签: python, 矩阵, pytorch

文章目录

  • 一、tensor.sum

一、tensor.sum

为了更好地理解 `torch.sum` 函数中 `dim` 参数的作用,我们可以将三维张量的求和过程分解,并通过具体的例子来说明不同 `dim` 参数的效果。

### 三维张量的结构

假设我们有一个 3x2x2 的张量,如下所示:
import torch

# 其中 [1, 2] 中的 1 和 2 是 x 方向
# 其中 [[1,2], [3,4]] 中的 [1, 2] 和 [3, 4] 是 y 方向
# 其中 [[[1,2][3,4]],[[5,6][7,8]],[[9,10][11,12]]] 中的 [[1,2][3,4]] 和 [[5,6][7,8]] 和 [[9,10][11,12]] 是 z 方向
tensor = torch.tensor([[[1, 2],
                        [3, 4]],

                       [[5, 6],
                        [7, 8]],

                       [[9, 10],
                        [11, 12]]])

print(tensor)

这个张量可以看作是包含三个 2x2 矩阵的集合:
[
 [[ 1,  2],
  [ 3,  4]],
 [[ 5,  6],
  [ 7,  8]],
 [[ 9, 10],
  [11, 12]]
]

### 沿指定维度求和的效果

#### 不指定 `dim` 参数
默认情况下,`torch.sum` 会对所有元素求和:
total_sum = torch.sum(tensor)
print(total_sum)  # 输出: tensor(78)
解释:1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 = 78

#### 指定 `dim=0`
`dim=0` 表示沿最外层维度求和,即对每个 2x2 矩阵的对应位置元素求和:
即制定dim=x, 表示沿着z方向求和(即消灭z方向)

sum_dim0 = torch.sum(tensor, dim=0)
print(sum_dim0)
输出:
tensor([[15, 18],
        [21, 24]])
解释:
第一个位置:[1 + 5 + 9, 2 + 6 + 10] = [15, 18]
第二个位置:[3 + 7 + 11, 4 + 8 + 12] = [21, 24]

#### 指定 `dim=1`
`dim=1` 表示沿每个 2x2 矩阵的行方向求和:
即制定dim=y, 表示沿着y方向求和(即消灭y方向)
sum_dim1 = torch.sum(tensor, dim=1)
print(sum_dim1)
输出:
tensor([[ 4,  6],
        [12, 14],
        [20, 22]])
解释:
对第一个二维矩阵:行和 [1 + 3, 2 + 4] = [4, 6]
对第二个二维矩阵:行和 [5 + 7, 6 + 8] = [12, 14]
对第三个二维矩阵:行和 [9 + 11, 10 + 12] = [20, 22]

#### 指定 `dim=2`
`dim=2` 表示沿每个 2x2 矩阵的列方向求和:
即制定dim=z, 表示沿着x方向求和(即消灭x方向)

sum_dim2 = torch.sum(tensor, dim=2)
print(sum_dim2)
输出:
tensor([[ 3,  7],
        [11, 15],
        [19, 23]])
解释:
对第一个二维矩阵:列和 [1 + 2, 3 + 4] = [3, 7]
对第二个二维矩阵:列和 [5 + 6, 7 + 8] = [11, 15]
对第三个二维矩阵:列和 [9 + 10, 11 + 12] = [19, 23]
### 总结
dim=0:沿最外层维度求和,结果是一个 2x2 矩阵,每个元素是对应位置上所有二维矩阵元素的和。
dim=1:沿每个二维矩阵的行方向求和,结果是一个 3x2 矩阵,每个元素是对应位置上行的和。
dim=2:沿每个二维矩阵的列方向求和,结果是一个 3x2 矩阵,每个元素是对应位置上列的和。

http://www.niftyadmin.cn/n/5664733.html

相关文章

【JavaEE初阶】多线程6(线程池\定时器)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 实例3:线程池 参数解释 核心线程数, 最大线程数 允许空闲的最大时间 ,时间单位 任务队列(阻塞队列) 线程工厂>工厂设计模式 拒绝策略 使用举例 模拟实现一个线…

windows使用tcpdump.exe工具进行抓包教程

windows主机安装一些抓包工具可能有些不方便,这里有一个tcpdump.exe工具直接免安装,可以直接使用进行抓包。(工具下载见 附件) tcpdump.exe使用教程 如下: 1:tcpdump -D 可查看网络适配器(注意前面的编号)…

OpenHarmony(鸿蒙南向开发)——轻量和小型系统三方库移植指南(一)

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植指南(一) Op…

Web植物管理系统-下位机部分

本节主要展示上位机部分,采用BSP编程,不附带BSP中各个头文件的说明,仅仅是对main逻辑进行解释 main.c 上下位机通信 通过串口通信,有两位数据验证头(verify数组中保存对应的数据头 0xAA55) 通信格式 上位发送11字节…

Python那些关于字符串的操作

Python那些关于字符串的操作 1 前言2 字符串的处理操作.2.1分割字符串2.2拼接字符串2.3正则表达式2.4enumerate2.5字符串中的大小写转化2.6 对齐加数 总结 1 前言 python关于字符串的操作很多,而正则化直接是打开新世界的大门。同一种说法,使用不同语言…

【Ubuntu】Ubuntu双网卡配置 实现内外网互不影响同时可用

【Ubuntu】Ubuntu双网卡配置 实现内外网互不影响同时可用 建议前提配置用到的命令参考文献: 建议 本文仅作个人记录,请勿完全照搬,建议直接看此视频,按作者的步骤进行配置 linux配置内外网(ubuntu举例)&am…

关于wordPress中的用户登录注册等问题

前言 大家在做类似的功能的时候,有没有相关的疑问。那就是我都已经选择好了相应的主题和模版,但是为什么都没有用户注册和用户登录的页面存在呢? WordPress默认情况下不提供用户注册和登录功能的原因是它最初是作为一个博客平台开发的&…

IDS Clearing House Core 项目入门

IDS Clearing House 核心由两个微服务组成:Document API 和 Keyring API。它们共同支持 Clearing House 服务,这是工业数据空间中 Clearing House 组件的一个原型实现。Clearing House 的主要功能是提供一个可以存储和检索数据的 API,所有的数…