当前位置: 首页 > article >正文

eniops库中pack函数使用方法

pack

就是打包。

举个例子

import torch
import einops

# 创建输入张量
x = torch.randn(1, 6, 1, 2)  # 形状 (1, 6, 1, 2)

# 使用 pack 打包,注意输入必须是数组,所以这里要加一个[]
flatten, ps = einops.pack([x], 'h * d')

print("x shape:", x.shape)        # 输出: torch.Size([1, 6, 1, 2])
print("flatten shape:", flatten.shape)  # 输出: torch.Size([1, 6, 2])
print("ps:", ps)  # 输出: (6, 1)

模式字符串的含义, ‘h * d’ 是输出模式,表示:

  • h:保留第 0 维(大小为 1)。

  • *:将剩余的维度(第 1 维和第 2 维)展平为一个新的维度。

  • d:保留第 3 维(大小为 2)。

输出结果

  • flatten:这是打包后的张量。根据模式 ‘h * d’,flatten 的形状为 (h, w * c, d),即 (1, 6 * 1, 2) = (1, 6, 2)。
    它保留了第 0 维和第 3 维,同时将第 1 维和第 2 维展平。

  • ps:这是 pack 函数的附加输出,表示打包的形状信息。它是一个元组,记录了展平前的维度信息。对于 x 的形状 (1, 6, 1, 2),ps 的值可能是 (6, 1),表示第 1 维和第 2 维的原始形状。

如果不使用pack,则可以这样实现

import torch

# 创建输入张量
x = torch.randn(1, 6, 1, 2)  # 形状 (1, 6, 1, 2)

# 将第 1 维和第 2 维展平
x_reshaped = x.reshape(1, 6 * 1, 2)  # 形状 (1, 6, 2)

# 如果需要 ps 信息
ps = (6, 1)

print("x shape:", x.shape)        # 输出: torch.Size([1, 6, 1, 2])
print("x_reshaped shape:", x_reshaped.shape)  # 输出: torch.Size([1, 6, 2])
print("ps:", ps)  # 输出: (6, 1)

http://www.kler.cn/a/518042.html

相关文章:

  • 自定义命令执行器:C++中命令封装的深度探索(C/C++实现)
  • unity.NavMesh Agent
  • Windows本地部署(DeepSeek-R1-Distill-Qwen-1.5B)模型
  • Docker快速部署高效照片管理系统LibrePhotos搭建私有云相册
  • An OpenGL Toolbox
  • 【落羽的落羽 数据结构篇】算法复杂度
  • Python数据分析-pandas入门(五)
  • LosslessCut:一款强大的音视频无损剪辑工具
  • 【深度学习】常见模型-生成对抗网络(Generative Adversarial Network, GAN)
  • 【优选算法】10----无重复字符的最长子串
  • Vue.js组件开发-如何实现带有搜索功能的下拉框
  • CASAIM与友达光电达成深度合作,CASAIM IS自动化蓝光测量技术为创新显示技术发展注入新的活力
  • Poetry shell --> poetry-plugin-shell
  • Hnu电子电路实验4
  • 基于数智立体化V2.0体系构建医疗综合智能体:理论、实践与展望
  • C语言内存管理详解
  • LKT4304新一代算法移植加密芯片,守护 物联网设备和云服务安全
  • leetcode——最大子数组和(java)
  • 15.7k!DISM++一款快捷的系统优化工具
  • 使用RocketMQ 的业务系统怎么处理消息的积压?
  • kafka-保姆级配置说明(broker)
  • 计算机视觉-卷积
  • Qt调用ffmpeg库实现简易视频播放器示例
  • 嵌入式音视频开发——视频篇(三)
  • 如何在Linux中找到MySQL的安装目录
  • python实现http文件服务器访问下载