【发布时间】:2019-05-14 15:17:02
【问题描述】:
我正在尝试根据相应的索引张量加入多个张量。作为一个玩具示例,我有一个张量 A = [[0,1,2],[2,3,4]] 和对应的索引向量 B = [0,1] 和另一个张量 C = [[5,6,7],[8,9,10],[11,12,13]] 和对应的索引向量 D = [0,1,2]。我试图返回一个张量,使得E = [[0,1,2],[5,6,7],[2,3,4],[8,9,10],[11,12,13]] 具有相同索引的值组合在一起。我正在尝试有效地执行此操作,因为它包含在我的 NN 模型中,并且在反向传播期间可能会遇到性能问题。
我能够通过构建字典和 for 循环来实现这一点:
E = defaultdict(list)
for vector, indices in zip([A,C],[B,D]):
for vector, i in enumerate(vector):
E[indices[i]].append(vector)
E = list(E.values())
但是,这种方法会显着减慢模型训练的速度。有没有办法更有效地做到这一点? Pytorch 的各种 index_ 操作似乎并没有解决这个问题。谢谢!
【问题讨论】:
标签: python machine-learning pytorch