【发布时间】:2019-07-28 23:58:40
【问题描述】:
我正在学习在 Pytorch 中实现分解机。 并且应该有一些特征交叉操作。 比如我有三个特征[A,B,C],嵌入后是[vA,vB,vC],所以特征交叉是“[vA·vB],[vA·vC],[vB ·vc]"。
它可以通过 MATRIX OPERATIONS 来实现。 但这只会给出最终结果,比如一个值。
问题是,如何在不做FOR循环的情况下获取下面所有的cross_vec: 注意:“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)
【问题讨论】:
-
请不要发布屏幕截图 - 而是复制粘贴文本。 SO 无法索引屏幕截图中的文本。
-
A和vA或您的feature_emb和cross_vec的尺寸是多少? -
A:batch_size x feature_len vA:batch_size x feature_len x embedding_size
标签: machine-learning deep-learning pytorch recommendation-engine matrix-factorization