将张量列表转换为张量 pytorch

时间:2021-06-03 01:54:37

标签: pytorch tensor

我有一个嵌入列表。该列表具有 N 个列表,每个列表具有 M 个嵌入(张量)。

list_embd = [[M embeddings], [M embeddings], ...]

(每个嵌入都是一个 tensor with size (1,512)

我想要做的是创建一个 tensor size (N, M),其中每个 "cell" 是一个嵌入。

为 numpy 数组尝试过这个。

array = np.zeros(n,m)

for i in range(n):
    for j in range(m):
        array[i, j] = list_embd[i][j]

但还是有错误。

在 pytorch 中尝试将所有 M 个嵌入 concat 成一个张量大小 (1, M),然后连接所有行。但是,当我沿着这些 M 个嵌入中的两个昏暗 1 连接时,我得到一个张量形状的 (1, 1028) 而不是 (1, 2)。

final = torch.tensor([])
    for i in range(n):
        interm = torch.tensor([])
        for j in range(m):
            interm = torch.cat((interm, list_embd[i][j]), 0)
        final = = torch.cat((final, interm), 1)

有什么想法或建议吗? 我需要一个矩阵,每个单元格中都有嵌入。

1 个答案:

答案 0 :(得分:0)

您可以使用 torch.cattorch.stack 创建形状为 final(N, M, 512) 3D 张量:

final = torch.stack([torch.cat(sub_list, dim=0) for sub_list in list_embd], dim=0)

首先,您使用 torch.cat 从每个 N 嵌入列表中创建 (M, 512) 形状为 M 的二维张量列表。然后使用 torch.stack 将这些 N 2D 矩阵堆叠成单个 3D 张量 final