У меня есть 3 вектора - вектор суммы, вектор вклада и вектор значения.Я хочу суммировать векторы значений в соответствии с их вектором вклада и поместить их в соответствующий им индекс в векторе суммы.Например:
A = [0;0] (sum vector), B = [0,0,1,1] (contribution vector) C=[20,30,40,10] (value vector)
Вывод: A = [20+30;40+10]
Так, что вектор B имеет ту же длину, что и C, и соответствующий ему индекс говорит нам, какое положение вДобавить к.
Я могу добиться этого с помощью цикла for следующим образом:
for index,value in enumerate(C):
A[B[index]]+=value
Однако, поскольку это будет частью моего прямого цикла модели NN, это вызоветзначительная проблема производительности.В частности, я искал подход сортировки векторов / матриц, который будет более эффективным.В приведенном выше примере что-то, что эффективно работало для меня, было:
A=torch.zeros(2,1)
C=C.reshape(2,2)
sum=torch.sum(C,1).reshape(2,1)
A += sum
Однако я сталкиваюсь с проблемами, поскольку не всегда бывает, что индексы A имеют одинаковый вклад.Например - случай такой, что B = [0,0,0,1,1]
и C=[20,30,40,10,50]
.Есть ли функция или стратегический способ сделать это для общих случаев?Спасибо!