【问题标题】:ValuerError regarding dimensions when declaring PyTorch tensor声明 PyTorch 张量时有关尺寸的 ValuerError
【发布时间】:2020-01-07 08:19:30
【问题描述】:

我目前正在尝试将值列表转换为 PyTorch 张量,但遇到了一些困难。

导致错误的确切代码是:

input_tensor = torch.cuda.FloatTensor(data)

这里,data 是一个包含两个元素的列表:第一个元素是另一个 NumPy 数组列表,第二个元素是一个元组列表。两个列表的大小不同,我认为这会导致以下错误:

*** ValueError: expected sequence of length x at dim 2 (got y)

通常y 大于x。我尝试过使用 IPython 终端来查看问题所在,似乎尝试将这种格式的数据直接转换为 PyTorch 张量是行不通的。不过,将data 列表中的每个单独元素转换为张量是可行的。

有谁知道为什么这不起作用,也许还可以就如何实现我的最初目标提供一些反馈?提前致谢。

【问题讨论】:

    标签: pytorch


    【解决方案1】:

    假设data 的第一个子列表包含n 一维数组,每个数组大小为m,第二个子列表包含k 元组,每个数组大小为p

    当调用torch.FloatTensor(data) 时,每个子列表都被转换为二维张量,形状分别为(n, m)(k, p);然后将它们堆叠在一起形成一个 3D 张量。这只有在 n=km=p 时才有可能——将 3D 张量视为长方体。

    我认为这很明显,所以我猜你有 m = p 并想通过简单地连接两个子列表来创建形状为 (n+k, m) 的二维张量:

    torch.FloatTensor(np.concatenate(data))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 2020-06-25
      • 2022-01-12
      • 2021-10-02
      • 2021-12-08
      • 1970-01-01
      相关资源
      最近更新 更多