pytorch 张量的unfold方法介绍

在 PyTorch 中,unfold 是张量的一种操作方法,用于将张量的一个维度展开为多个重叠的窗口。这在处理滑动窗口操作(如卷积、时间序列分片等)时非常有用。

方法签名

复制代码
Tensor.unfold(dimension, size, step)

参数说明

  • dimension: 要展开的维度索引(从 0 开始)。
  • size: 每个窗口的大小。
  • step: 每个窗口之间的步幅。

返回值

返回一个新的张量,其中指定的维度被替换为一个新的维度,该维度包含了从原始维度中抽取的滑动窗口。

用法示例

示例 1: 基本用法
复制代码
import torch

# 创建一个一维张量
x = torch.arange(10)
print("原始张量:", x)

# 使用 unfold 创建滑动窗口
y = x.unfold(dimension=0, size=3, step=2)
print("展开后的张量:\n", y)

输出

复制代码
原始张量: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
展开后的张量:
 tensor([[0, 1, 2],
         [2, 3, 4],
         [4, 5, 6],
         [6, 7, 8]])

解释

  • 在第 0 维(行)上展开,窗口大小为 3,步幅为 2。
  • 展开的每个窗口是连续的 3 个元素,相邻窗口之间跳过 2 个元素。
示例 2: 二维张量的展开
复制代码
# 创建一个二维张量
x = torch.arange(1, 17).view(4, 4)
print("原始张量:\n", x)

# 在维度 1 上展开
y = x.unfold(dimension=1, size=2, step=1)
print("展开后的张量:\n", y)

输出

复制代码
原始张量:
 tensor([[ 1,  2,  3,  4],
         [ 5,  6,  7,  8],
         [ 9, 10, 11, 12],
         [13, 14, 15, 16]])
展开后的张量:
 tensor([[[ 1,  2],
          [ 2,  3],
          [ 3,  4]],
         [[ 5,  6],
          [ 6,  7],
          [ 7,  8]],
         [[ 9, 10],
          [10, 11],
          [11, 12]],
         [[13, 14],
          [14, 15],
          [15, 16]]])

解释

  • 在第 1 维(列)上展开,窗口大小为 2,步幅为 1。
  • 每一行的每个窗口是连续的 2 个元素,相邻窗口之间跳过 1 个元素。
示例 3: 高维张量的展开

对于高维张量,unfold 操作也类似,只需指定正确的维度即可。例如:

复制代码
x = torch.randn(2, 3, 4)  # 一个 3 维张量
y = x.unfold(dimension=2, size=2, step=1)
print("高维张量展开后形状:", y.shape)

输出

复制代码
高维张量展开后形状: torch.Size([2, 3, 3, 2])

注意事项

  1. 边界问题:如果剩余的元素不足以填满窗口,则这些元素会被忽略。
  2. 效率unfold 是一个视图操作,不会拷贝数据,但其返回值是一个新的张量,需要额外注意内存管理。

常见应用

  • 图像处理中的滑动窗口操作。
  • 自定义卷积操作或池化操作。
  • 时间序列数据的分片处理。
相关推荐
Shockang1 小时前
用 AI 打造高品质 Web 应用
人工智能
l1258651 小时前
# LangGraph Memory机制深度解析:短期记忆与长期记忆的工程实践
前端·人工智能·python·langchain·bootstrap
手写码匠1 小时前
Dify 多 Agent 工具权限与安全沙箱实战:让智能体“有能力,但不越权“
人工智能·深度学习·算法·aigc
ZGIAI2 小时前
ZGI Skill Loop:给工具调用设边界
人工智能·架构
黎阳之光2 小时前
打破堆场感知黑盒:黎阳之光视频孪生,构建港口码头网格化透明管控新体系
大数据·人工智能·算法·安全·数字孪生
ZGIAI2 小时前
ZGI 工作区权限:用户为何看不到资源
人工智能·架构
FlagOS智算系统软件栈2 小时前
Qwen3.8-Flash-Next发布首日适配 8 款AI芯片,众智FlagOS跑通并优化新一代混合注意力架构
人工智能·架构
武汉星际互动2 小时前
政务大厅转型“城市客厅”,集约化建设与线上线下一体化如何落地?
人工智能·政务
码视野2 小时前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
Hrain-AI2 小时前
Qwen4 架构预览解读:GDN+QSA 混合注意力如何把激活参数压到 6B
人工智能·架构·开源