Pytorch学习笔记(一):torch.cat()模块的详解

相关文章

Pytorch学习笔记(一):torch.cat()模块的详解
Pytorch学习笔记(二):nn.Conv2d()函数详解
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
Pytorch学习笔记(六):view()和nn.Linear()函数详解
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解


✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️

1. What is torch.cat()💖

torch.cat() 是 PyTorch 库中一个非常实用且重要的函数,其中 “cat” 是 “concatenate” 的缩写,含义为拼接、连接。该函数的主要作用是将两个或多个张量(tensor)按照指定的维度进行拼接,从而得到一个新的张量。这种拼接操作在深度学习的很多场景中都十分常见,例如在模型的特征融合过程中,需要将不同层或不同分支的特征张量进行拼接,以综合利用各个部分的信息,增强模型的表达能力。

在神经网络的构建和训练过程中,我们经常会遇到需要合并不同来源数据的情况。比如,在一些多模态数据处理任务中,可能会从图像、文本等不同模态获取特征,然后通过 torch.cat() 函数将这些特征张量拼接在一起,以便后续的网络层对融合后的特征进行统一处理。又或者在一些复杂的网络结构中,不同的子网络分支会生成不同的特征表示,为了进一步利用这些特征,也需要使用 torch.cat() 函数将它们拼接起来。

2. How to use torch.cat()💖

torch.cat() 函数的基本语法为 torch.cat(tensors, dim=0),其中 tensors 是一个包含要拼接的张量的元组或列表,dim 是指定的拼接维度。

C = torch.cat((A, B), 0) 时,这表示按维数 0 进行拼接,也就是竖着拼。在这种情况下,要求参与拼接的张量 AB 在除了维度 0 之外的其他维度上的大小必须相同。例如,若 A 的形状是 (m, n)B 的形状是 (p, n),那么拼接后的张量 C 的形状将是 (m + p, n)。这里的维数 0 通常对应着张量的第一个维度,在很多情况下可以理解为样本数量的维度。在图像数据中,如果 AB 都是图像特征张量,按维数 0 拼接就相当于将不同的图像样本的特征连接在一起。

C = torch.cat((A, B), 1) 时,是按维数 1 进行拼接,即横着拼。此时要求张量 AB 在除了维度 1 之外的其他维度上的大小相同。例如,若 A 的形状是 (m, n)B 的形状是 (m, q),那么拼接后的张量 C 的形状将是 (m, n + q)。在图像数据处理中,按维数 1 拼接可能意味着将不同通道的特征进行合并,从而丰富图像的特征表示。

3. Actual code of torch.cat()💖

import torch
A = torch.zeros(3, 4)
B = torch.ones(3, 4)
print(A)
print(B)
C = torch.cat((A, B), 0)  # 按维数0拼接(竖着拼,需要列数相同)
D = torch.cat((A, B), 1)  # 按维数1拼接(横着拼,需要行数相同)
print(C)
print(D)
  • 代码解析
    • 首先,import torch 导入了 PyTorch 库,这是使用 torch.cat() 函数的前提。
    • A = torch.zeros(3, 4) 创建了一个形状为 (3, 4) 的全零张量 A,即这个张量有 3 行 4 列。
    • B = torch.ones(3, 4) 创建了一个形状同样为 (3, 4) 的全一张量 B
    • print(A)print(B) 分别输出张量 AB 的具体数值,方便我们直观地查看这两个张量的初始状态。
    • C = torch.cat((A, B), 0) 按照维数 0 对张量 AB 进行拼接。由于 AB 的列数(第二个维度)都是 4,满足按维数 0 拼接的条件。拼接后的张量 C 的形状为 (3 + 3, 4),即 (6, 4)。通过 print(C) 可以看到拼接后的张量 C 的具体数值。
    • D = torch.cat((A, B), 1) 按照维数 1 对张量 AB 进行拼接。因为 AB 的行数(第一个维度)都是 3,符合按维数 1 拼接的要求。拼接后的张量 D 的形状为 (3, 4 + 4),即 (3, 8)。最后,print(D) 输出拼接后的张量 D 的具体数值。

通过这个实际代码示例,我们可以更加清晰地理解 torch.cat() 函数在不同维度上的拼接操作及其效果,为在实际的深度学习项目中灵活运用该函数提供了直观的参考。 THE RESULT IS:
在这里插入图片描述
✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZY_dl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值