我有一个嵌入列表。该列表具有 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)
有什么想法或建议吗? 我需要一个矩阵,每个单元格中都有嵌入。
答案 0 :(得分:0)
您可以使用 torch.cat
和 torch.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
。