我从一个dictionary对象开始:
{"train": [{"input": [[3, 1, 2], [3, 1, 2], [3, 1, 2]], "output": [[4, 5, 6], [4, 5, 6], [4, 5, 6]]}, {"input": [[2, 3, 8], [2, 3, 8], [2, 3, 8]], "output": [[6, 4, 9], [6, 4, 9], [6, 4, 9]]}]}
然后我想给循环中的每个输入和输出对象添加填充,所以我把每个输入和输出转换成Tensor,这样我就可以使用F.pad来添加填充。
tensor([[0, 0, 0, 0, 0],
[0, 3, 1, 2, 0],
[0, 3, 1, 2, 0],
[0, 3, 1, 2, 0],
[0, 0, 0, 0, 0]]).
第一次输出的结果:
tensor([[0, 0, 0, 0, 0],
[0, 4, 5, 6, 0],
[0, 4, 5, 6, 0],
[0, 4, 5, 6, 0],
[0, 0, 0, 0, 0]])
这样就可以了,现在,我想把生成的Tensor重新构造成和原始字典一样的形式,看起来像这样:
{"train": [{"input": [[0, 0, 0, 0, 0], [0, 3, 1, 2, 0], [0, 3, 1, 2, 0], [0, 3, 1, 2, 0], [0, 0, 0, 0, 0]], "output": [[0, 0, 0, 0, 0], [0, 4, 5, 6, 0], [0, 4, 5, 6, 0], [0, 4, 5, 6, 0], [0, 0, 0, 0, 0]]}, {"input": [[0, 0, 0, 0, 0],
[0, 2, 3, 8, 0],
[0, 2, 3, 8, 0],
[0, 2, 3, 8, 0],
[0, 0, 0, 0, 0]], "output": [[0, 0, 0, 0, 0],
[0, 6, 4, 9, 0],
[0, 6, 4, 9, 0],
[0, 6, 4, 9, 0],
[0, 0, 0, 0, 0]]}]}
我可以看到一个字符串连接的方式可能会工作:
第一个月
或者类似的东西,但是考虑到不同数组中元素的数量不同,这看起来像是一个循环噩梦,我在想一定有更好的方法,有人知道是什么吗?
1条答案
按热度按时间vltsax251#
以下内容是否符合您的目的?