torch.cat()
是 PyTorch 中的一个非常有用的函数,它用于沿着指定的维度将一系列张量(tensor)拼接起来。这个函数在处理批处理数据、合并不同来源的特征或生成更大的张量时非常有用。
函数签名
python复制代码
torch.cat(tensors, dim=0, *, out=None) -> Tensor |
- tensors (sequence of Tensors): 要拼接的张量序列。这些张量必须具有相同的形状,除了指定要拼接的维度
dim
。 - dim (int, optional): 要拼接的维度。默认值为 0。
- out (Tensor, optional): 输出张量。如果提供,则结果将被写入此张量。
返回值
返回一个拼接后的张量。
例子
假设我们有两个张量 A
和 B
,我们想要沿着不同的维度将它们拼接起来。
沿着第一个维度(dim=0)拼接
python复制代码
import torch | |
# 创建两个张量 | |
A = torch.randn(2, 3) # 形状为 (2, 3) | |
B = torch.randn(3, 3) # 形状为 (3, 3),注意第一个维度不同 | |
# 沿着第一个维度(dim=0)拼接 | |
C = torch.cat((A, B), dim=0) | |
print(C.shape) # 输出: torch.Size([5, 3]) |
在这个例子中,A
和 B
的第一个维度大小不同(2 和 3),但第二个维度大小相同(都是 3)。我们沿着第一个维度将它们拼接起来,结果是一个形状为 (5, 3)
的张量。
沿着第二个维度(dim=1)拼接
python复制代码
# 创建两个形状相同的张量 | |
A = torch.randn(2, 3) # 形状为 (2, 3) | |
B = torch.randn(2, 4) # 形状为 (2, 4),注意第二个维度不同 | |
# 沿着第二个维度(dim=1)拼接 | |
C = torch.cat((A, B), dim=1) | |
print(C.shape) # 输出: torch.Size([2, 7]) |
在这个例子中,A
和 B
的第一个维度大小相同(都是 2),但第二个维度大小不同(3 和 4)。我们沿着第二个维度将它们拼接起来,结果是一个形状为 (2, 7)
的张量。
注意
- 拼接的张量必须在除了指定维度以外的所有维度上具有相同的形状。
dim
参数决定了拼接的维度,默认是 0。- 如果
out
参数被指定,则结果将被写入这个张量中,并且返回的将是这个张量的引用。但是,在实际使用中,通常不需要指定out
参数。