【问题标题】:Converting 4 dimensional tensors into list of lists of lists (Python)将 4 维张量转换为列表列表(Python)
【发布时间】:2021-12-23 22:16:29
【问题描述】:

我有 6 个形状 (batch_size, S, S, 1) 的张量,我想将它们组合成一个大小为 (batch_size, S*S, 6) 的 python 列表 - 所以张量的每个元素都应该在内部列表。

不使用循环可以实现吗?有什么有效的解决方法?

【问题讨论】:

  • 我解决这个问题的最初想法是使用pytorch.cat 制作一个大小为 (batch_size, S, S, 6) 的张量,然后以某种方式减小尺寸。但是,我不知道如何减少维度的数量并仍然确保没有遗漏任何值。

标签: python list pytorch tensor


【解决方案1】:

batch_size=10S=4 用于本示例:

 >>> x = [torch.rand(10, 4, 4, 1) for _ in range(6)]

确实第一步是将张量连接到最后一个维度axis=3

>>> y = torch.cat(x, -1)
>>> y.shape
torch.Size([10, 4, 4, 6])

然后重塑以展平axis=1axis=2,您可以在这里使用torch.flatten 这样做,因为两个轴相邻:

>>> y = torch.cat(x, -1).flatten(1, 2)
>>> y.shape
torch.Size([10, 16, 6])

【讨论】:

  • 感谢您的回复,这解决了问题。
猜你喜欢
  • 2019-08-07
  • 2019-05-23
  • 2022-01-10
  • 1970-01-01
  • 2020-02-11
  • 2019-07-29
  • 1970-01-01
  • 2018-05-10
相关资源
最近更新 更多