Я учусь внедрять машину факторизации в Pytorch.
И должна быть какая-то особенность операций пересечения.
Например, у меня есть три функции [A, B, C], после встраивания они являются [vA, vB, vC], поэтому пересечение функций это "[vA · vB], [vA · vC], [vB · ВК]».
Я знаю, что эту операцию можно упростить с помощью следующего:
![enter image description here](https://i.stack.imgur.com/FYEVw.png)
Может быть реализовано с помощью MATRIX OPERATIONS.
Но это дает только конечный результат, скажем, одно значение.
Вопрос в том, как получить все cross_vec в следующем без цикла FOR:
примечание: размер "feature_emb" равен [batch_size x feature_len x embedding_size]
g_feature = 0
for i in range(self.featurn_len):
for j in range(self.featurn_len):
if j <= i: continue
cross_vec = feature_emb[:,i,:] * feature_emb[:,j,:]
g_feature += torch.sum(cross_vec, dim=1)