gpt4 book ai didi

python - 将张量列表转换为张量 pytorch

转载 作者:行者123 更新时间:2023-12-03 16:05:34 26 4
gpt4 key购买 nike

我有张量列表,每个张量都有不同的大小,如何使用 pytroch 将此张量列表转换为张量

有关更多信息,我的列表包含张量,每个张量都有不同的大小
例如第一个张量大小是 torch.Size([76080, 38])

其他张量的形状在第二个元素中会有所不同,例如列表中的第二个张量是 torch.Size([76080, 36])

当我使用
火炬张量(x)
我收到一个错误
ValueError:只有一个元素张量可以转换为 Python 标量

最佳答案

张量不能保存可变长度数据。您可能正在寻找 cat

例如,这里我们有一个包含两个不同大小的张量的列表(在它们的最后一个 dim(dim=2)),我们想创建一个由它们组成的更大的张量,所以我们可以使用 cat 并创建一个更大的张量包含他们的两个数据。

另请注意,从 right now 开始,您不能在 cpu 上使用带有半张量的 cat,因此您应该将它们转换为浮点数,进行连接,然后再转换回半张量

import torch

a = torch.arange(8).reshape(2, 2, 2)
b = torch.arange(12).reshape(2, 2, 3)
my_list = [a, b]
my_tensor = torch.cat([a, b], dim=2)
print(my_tensor.shape) #torch.Size([2, 2, 5])

你还没有解释你的目标,所以另一种选择是使用 pad_sequence 像这样:
from torch.nn.utils.rnn import pad_sequence
a = torch.ones(25, 300)
b = torch.ones(22, 300)
c = torch.ones(15, 300)
pad_sequence([a, b, c]).size() #torch.Size([25, 3, 300])

编辑:在这种特殊情况下,您可以使用 torch.cat([x.float() for x in sequence], dim=1).half()

关于python - 将张量列表转换为张量 pytorch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55050717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com