【发布时间】:2022-12-04 08:02:29
【问题描述】:
有什么干净的方法可以在 pytorch 中创建一批 3D 序列吗?我有形状为 (sequence_length_lvl1, sequence_length_lvl2, D) 的 3D 序列,这些序列的 sequence_length_lvl1 和 sequence_length_lvl2 具有不同的值,但它们都具有相同的 D 值,我想在第一维和第二维中填充这些序列,并且创建一批,但我不能使用 pytorch pad_sequence 函数,因为它仅在序列仅在一个维度上具有可变长度时才有效。我想问问是否有人知道任何干净的方法来做到这一点?
为了更清楚,我提供了一个例子。 假设输入序列类似于:
input1 = [
[[1, 1, 1], [2, 2, 2], [3, 3, 3]],
[[4, 4, 4], [5, 5, 5]]
]
input2 = [
[[1, 1, 1], [2, 2, 2], [3, 3, 3]],
[[6, 6, 6]],
[[4, 4, 4], [5, 5, 5]]
]
我想填充 [input1, input2]。所需的输出将是:
output = [
[[[1, 1, 1], [2, 2, 2], [3, 3, 3]],
[[4, 4, 4], [5, 5, 5], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]],
[[[1, 1, 1], [2, 2, 2], [3, 3, 3]],
[[6, 6, 6], [0, 0, 0], [0, 0, 0]],
[[4, 4, 4], [5, 5, 5], [0, 0, 0]]]
]
因此,所需的输出具有 (2, 3, 3, 3) 的形状。
【问题讨论】:
-
添加示例输入和所需的输出!!!
-
@I'mahdi 完成了!!
-
你总是想要
(2,3,3,3)吗? -
不,这只是一个例子。输入的第一维和第二维可以不同,但没有特定的预定义值。 @我是马赫迪
-
你不能拥有这两个数组,因为维度不同,试试这个:
np.array([[[1, 1, 1], [2, 2, 2], [3, 3, 3]], [[4, 4, 4], [5, 5, 5]]])你会收到这个警告:ndarrays with different lengths or shapes)
标签: python deep-learning pytorch lstm