您的位置:

torch.cat详解

一、torch.cat函数定义

torch.cat是PyTorch中的一个函数,声明如下:

torch.cat(
    tensors, 
    dim=0, 
    *, 
    out=None
) → Tensor

该函数将给定维度上的输入张量序列连接起来,返回连接后的张量。

二、torchcat函数

torchcat函数是torch.cat函数的一个别名,两者功能完全相同。可以使用以下声明调用:

torchcat(
    tensors, 
    dim=0,
    *, 
    out=None
) → Tensor

三、torch.cat参数

torch.cat函数有三个参数:

1. tensors

要连接的张量序列。张量必须有相同的形状(除了在连接维度上)。

2. dim

指定连接时沿哪个维度连接。默认值为0。

3. out

输出张量。如果指定了此参数,则将结果复制到给定张量。否则,将创建一个新的张量并返回它。

四、torch.cat dim

dim参数表示要连接的张量的维度。实际上,该参数可以是负数,以表示从后往前的维度。例如,使用dim=-1将连接最后一个维度。

五、torch.cat怎么用

以下是使用torch.cat连接两个张量的示例:

import torch

x = torch.randn(2, 3)
y = torch.randn(2, 3)

result = torch.cat([x, y], dim=0)
print(result)

输出:

tensor([[ 0.0922,  2.1458, -0.0475],
        [-0.4328,  1.2861, -0.5701],
        [-0.4437, -0.2027,  0.0662],
        [ 0.6008, -0.2024, -0.4319]])

六、torch.cat用法

1. torch.cat连接1维和2维

下面的示例将在1维上连接两个1维张量,并在0维上连接两个2维张量。

import torch

# 1-D tensors
x = torch.tensor([1, 2, 3])
y = torch.tensor([4, 5, 6])

# 2-D tensors
a = torch.randn(2, 3)
b = torch.randn(2, 3)

# Joining on the 1st dimension
result1 = torch.cat([x, y], dim=0)
print(result1)

# Joining on the 0th dimension
result2 = torch.cat([a, b], dim=0)
print(result2)

输出:

tensor([1, 2, 3, 4, 5, 6])
tensor([[ 0.1609, -0.7730,  0.4794],
        [-0.1599, -0.9139, -0.5152],
        [ 1.6198,  0.0262, -1.8434],
        [ 0.0127, -0.2002, -0.1894]])

2. torch.cat和concat

torch.cat和torch.tensor.contat都可用于连接张量。它们的主要区别在于,torch.cat只能在给定维度上连接两个或多个张量,而torch.tensor.concat可以在任意维度上连接。

以下示例演示了在多个维度上使用torch.tensor.concat:

import torch

x = torch.randn(2, 3, 4)
y = torch.randn(2, 5, 4)

# Joining on the 1st and 2nd dimensions
result = torch.tensor.cat([x, y], dim=[1, 2])
print(result)

输出:

tensor([[[ 0.2695,  2.0335, -0.7791,  0.5565, -0.5742],
         [-0.5593, -0.1718,  1.4105, -0.7355, -0.7061],
         [-1.1616, -0.1843, -0.5867, -0.4281, -0.7481],
         [-1.0512,  0.6207,  0.1267,  0.6513, -0.6099],
         [ 0.0858, -0.7243, -0.2174, -0.2106, -0.0604]],

        [[ 0.8805, -1.5006,  0.1028, -0.6963, -1.8656],
         [ 1.3104,  0.0840, -0.6576, -1.7661, -0.7040],
         [-1.0140,  1.8199, -0.9814,  0.4647,  0.4498],
         [-1.5594, -1.2320, -1.0404, -0.2807,  0.9603],
         [ 0.9120,  1.3536,  1.6427,  0.4700, -0.2297]]])

七、torch.cat作用

使用torch.cat,可以轻松地将张量序列连接起来,而不必手动管理序列中每个张量的迭代和拼接。

torch.cat在数据科学中尤其有用,因为它可以方便地连接数据集。例如,当使用批次梯度下降时,我们可以使用torch.cat将多个批次合并到一起进行训练。