PyTorch中各种求和运算

首先定义张量A

python 复制代码
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
tensor([[ 0.,  1.,  2.,  3.],
        [ 4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11.],
        [12., 13., 14., 15.],
        [16., 17., 18., 19.]])

1. 降维求和

降维求和会沿指定轴降低张量的维度,使它变为一个标量。

python 复制代码
A_sum_axis0 = A.sum(axis=0)  # 压缩为一行
tensor([40., 45., 50., 55.]

A_sum_axis1 = A.sum(axis=1)  # 压缩为一列
tensor([ 6., 22., 38., 54., 70.]

A_sum = A.sum(axis=[0, 1])  # 结果与 A.sum() 相同
tensor(190.)

2. 非降维求和

保持轴数不变

python 复制代码
A_sum_axis0 = A.sum(axis=0, keepdims=True)
tensor([[40., 45., 50., 55.]])

A_sum_axis1 = A.sum(axis=1, keepdims=True)
tensor([[ 6.],
        [22.],
        [38.],
        [54.],
        [70.]])

A_sum = A.sum(axis=[0, 1], keepdims=True)
tensor([[190.]])

3. 累积求和

沿某个轴计算A元素的累积总和,此函数不会沿任何轴降低输入张量的维度。

python 复制代码
A_sum_axis0 = A.cumsum(axis=0)
tensor([[ 0.,  1.,  2.,  3.],
        [ 4.,  6.,  8., 10.],
        [12., 15., 18., 21.],
        [24., 28., 32., 36.],
        [40., 45., 50., 55.]])

A_sum_axis1 = A.cumsum(axis=1)
tensor([[ 0.,  1.,  3.,  6.],
        [ 4.,  9., 15., 22.],
        [ 8., 17., 27., 38.],
        [12., 25., 39., 54.],
        [16., 33., 51., 70.]])
相关推荐
K姐研究社5 分钟前
阿里JVS Claw实测 – 手机一键部署 OpenClaw,开箱即用
人工智能·智能手机·aigc·飞书
卷积殉铁子6 分钟前
从“手动挡”到“自动驾驶”:OpenClaw如何让AI开发变成“说话就行”
人工智能
未知鱼9 分钟前
Python安全开发之子域名扫描器(含详细注释)
网络·python·安全·web安全·网络安全
机器之心9 分钟前
扎克伯格正在打造自己的「AI分身」,并计划裁掉1.6万人
人工智能·openai
2401_8318249612 分钟前
编写一个Python脚本自动下载壁纸
jvm·数据库·python
机器之心15 分钟前
必看!Sebastian Raschka新博客盘点了所有主要注意力机制
人工智能·openai
2401_8579182922 分钟前
Python在2024年的主要趋势与发展方向
jvm·数据库·python
今儿敲了吗24 分钟前
python基础学习笔记第九章——模块、包
开发语言·python
二闹41 分钟前
Python文件读取三巨头你该选择哪一个?
后端·python
独断万古他化43 分钟前
Python+Pytest 接口自动化测试实战 —— 抽奖系统接口测试框架设计与实现
python·pytest·接口自动化·测试·allure·yaml·json schema