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 是一个视图操作,不会拷贝数据,但其返回值是一个新的张量,需要额外注意内存管理。

常见应用

  • 图像处理中的滑动窗口操作。
  • 自定义卷积操作或池化操作。
  • 时间序列数据的分片处理。
相关推荐
陈橘又青几秒前
CANN在智能安防场景中的落地实践:释放硬件潜能,简化AI开发
人工智能·网络协议·学习·ai·编辑器
是店小二呀1 分钟前
在家搭个私人影院?LibreTV+cpolar,随时随地看片自由
开发语言·人工智能
飞梦工作室11 分钟前
突破 pandas 瓶颈:实时读写 Excel 与超透视汇总函数的双维解决方案
python·excel·pandas
爱看科技19 分钟前
智能眼镜AR领航XR市场增长浪潮,三星/微美全息布局竞速引领AI消费新势力!
人工智能·ar·xr
这张生成的图像能检测吗40 分钟前
(论文速读)多任务深度学习框架下基于Lamb波的多损伤数据集构建与量化算法
人工智能·深度学习·算法·数据集·结构健康监测
二川bro42 分钟前
2025年Python机器学习全栈指南:从基础到AI项目部署
人工智能·python·机器学习
梦想的初衷~1 小时前
“科研创新与智能化转型“暨AI智能体(Agent)开发及与大语言模型的本地化部署、优化技术实践
人工智能·语言模型·自然语言处理·生物信息·材料科学
IT_陈寒1 小时前
React性能翻倍!90%开发者忽略的5个Hooks最佳实践
前端·人工智能·后端
大任视点1 小时前
消费电子PCB需求激增,科翔股份发力AI手机终端大周期
人工智能·智能手机
Learn Beyond Limits1 小时前
Correlation vs Cosine vs Euclidean Distance|相关性vs余弦相似度vs欧氏距离
人工智能·python·神经网络·机器学习·ai·数据挖掘