Day02-13.张量的拼接操作

一、torch.cat()

torch.cat()函数可以将多个张量根据指定的维度拼接起来,不改变维度数。

二、torch.stack()

torch.stack()函数会在一个新的维度上连接一系列张量,这会增加一个新维度,并且所有输入张量的形状必须完全相同。

python 复制代码
"""
案例:
    演示张量的拼接操作.

涉及到的API:
    cat()     不改变维度数, 拼接张量. 除了拼接的那个维度外, 其它维度数必须保持一致.
    stack()   会改变维度数, 拼接张量. 所有的维度都必须保持一致.
"""

# 导包
import torch

# 设置随机种子.
torch.manual_seed(24)

# 1. 创建两个张量.
t1 = torch.randint(1, 10, (2, 3))
print(f't1: {t1}, shape: {t1.shape}')

t2 = torch.randint(1, 10, (2, 3))
print(f't2: {t2}, shape: {t2.shape}')

# 2. 演示张量的拼接
# 思路1: cat() 拼接张量.
t3 = torch.cat([t1, t2], dim=0)     # (2, 3) + (2, 3) = (4, 3)
print(f't3: {t3}, shape: {t3.shape}')

t4 = torch.cat([t1, t2], dim=1)     # (2, 3) + (2, 3) = (2, 6)
print(f't4: {t4}, shape: {t4.shape}')

# t5 = torch.cat([t1, t2], dim=-1)    # 效果同上
# print(f't5: {t5}, shape: {t5.shape}')

# t6 = torch.cat([t1, t2], dim=2) # 报错.
# print(f't6: {t6}, shape: {t6.shape}')
print('-' * 30)

# 思路2: stack() 拼接张量, 可以是新维度, 但是无论新旧维度, 所有维度都必须保持一致.
t7 = torch.stack([t1, t2], dim=0)   # (2, 3) + (2, 3) = (2, 2, 3)
print(f't7: {t7}, shape: {t7.shape}')

t8 = torch.stack([t1, t2], dim=1)   # (2, 3) + (2, 3) = (2, 2, 3)
print(f't8: {t8}, shape: {t8.shape}')

t9 = torch.stack([t1, t2], dim=2)   # (2, 3) + (2, 3) = (2, 3, 2)
print(f't9: {t9}, shape: {t9.shape}')

# 报错.
# t10 = torch.stack([t1, t2], dim=3)   # (2, 3) + (2, 3) = (2, 3, ?, 2)
# print(f't10: {t10}, shape: {t10.shape}')
相关推荐
Qyr9911 小时前
吞咽困难介护食:老龄化社会中的营养安全守护者
人工智能
火山引擎开发者社区11 小时前
文件上传即可检索|实时多模态向量链路落地实践分享
人工智能
YYJ-F11 小时前
Anthropic——AI安全人工智能研究公司,核心产品Claude Code辅助编程
人工智能·安全
具身智能进化论11 小时前
协作机器人产业进入规模化部署期,未来几年的增长从何而来
大数据·运维·人工智能·机器人·自动化·工厂方法模式
hzcj88811 小时前
汇正财经:储能装机回暖,估值有待提升
大数据·人工智能
妄想出头的工业炼药师12 小时前
GLAM-SLAM
人工智能
一直都在57212 小时前
LangChain4j精讲
开发语言·人工智能
八号当铺12 小时前
使用 Figma Agent Kit:插件 + MCP + 还原 Skill,打通本地设计协作
前端·人工智能·ai编程
今天AI了吗12 小时前
时序大模型 TimechoAI 实战:从数据接入到智能时序分析全链路指南
人工智能
AI服务老曹12 小时前
多路摄像头AI分析完整流程:硬件选型与GPU/NPU算力估算指南
人工智能