两个没有循环的pytorch张量的交集;理想的多维

问题描述 投票:0回答:0

TL;博士:

我有两个pytorch张量:

t_1 = torch.Tensor([1, 2, 3, 4, 5, 6, 7, 8, 9])
t_2 = torch.Tensor([1, 5, 7])

期望的输出应该包含

t_2
的元素出现在
t_1
中的索引,即:

output = torch.Tensor([0, 4, 6])

关键是所有操作都在GPU上执行,没有循环,而只是pytorch操作。该操作本身将用于非常大的张量。

长版:

第一个张量包含三角形网格的面。每个面都由 3 个指向各个顶点的索引来表征。存在 F 个面,因此张量的维数是

Fx3
。它只包含整数。

第二张量具有可变数量的潜在面。每个潜在的面孔也由 3 个指向各个顶点的索引来表征。但是,这些可能与第一个张量的顺序不同。面的数量在迭代之间发生变化,但不等于 F,因此

Nx3
其中
N!=F
。它只包含整数。

我想检查,第二个数组的每个潜在面的索引在第一个数组中是什么。这将帮助我使用预先计算的值,我已经为

t_1
.

计算了

我当前的解决方案依赖于为张量中的每个三元组计算一个唯一值,从而展平二维数组并获得一维张量。然后我可以比较这些,但是,我无法有效地这样做。此外,我必须计算每张脸中三个索引的 6 种可能组合中的每一种。

python pytorch cuda mesh
© www.soinside.com 2019 - 2024. All rights reserved.