You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch中使用torch.diff时如何保持张量原始维度?

在PyTorch中通过开头补0保持torch.diff后的张量维度

原张量维度为(3,3,3),使用torch.diff计算差分后维度变为(3,2,3),可以通过设置torch.diff的prepend参数,传入对应维度的0张量来补全开头,从而保持原始维度。

具体实现代码

import torch

# 初始化原张量
a = torch.rand(size=(3,3,3), dtype=torch.float32)

# 构造用于开头补0的张量,dim=1维度长度为1,其余维度与原张量一致
prepend_zero = torch.zeros(size=(3,1,3), dtype=torch.float32)

# 传入prepend参数计算差分
a_diff = torch.diff(a, n=1, dim=1, prepend=prepend_zero)

print(a_diff.shape)  # 输出: torch.Size([3, 3, 3])

更简洁的写法

可以利用原张量的切片来构造补0张量,避免手动指定维度:

import torch

a = torch.rand(size=(3,3,3), dtype=torch.float32)
# 取原张量dim=1维度的第一个切片形状,生成全0张量
prepend_zero = torch.zeros_like(a[:, :1, :])
a_diff = torch.diff(a, n=1, dim=1, prepend=prepend_zero)

print(a_diff.shape)  # 输出: torch.Size([3, 3, 3])

原理说明:prepend参数会将传入的张量拼接在原张量的指定维度开头,差分计算时基于拼接后的张量进行,最终结果的维度就会和原张量保持一致。

内容的提问来源于stack exchange,提问作者freak11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:15:39