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

标签 python pytorch

我有张量列表,每个张量都有不同的大小,如何使用 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/

相关文章:

python - PyQt4 中我们可以附加文本但在文本填充后无法编辑它的理想小部件是什么?

linear-regression - 模型参数初始化

python - 在 Windows 中移动虚拟环境

python - 使用 sklearn 进行半监督学习

python - ValueError : base_distribution needs to have shape with size at least 6, 但得到了 torch.Size([6])

docker - 带有URL路径的Docker满

python - 如何清除 PyTorch 中的 CUDA 内存

python-3.x - torch 错误 "RuntimeError: index out of range: Tried to access index 512 out of table with 511 rows"

python - 自动检测 Rohde and Schwarz 示波器的 IP 地址