zhongqiangwu960812 / AI-RecommenderSystem

该仓库尝试整理推荐系统领域的一些经典算法模型
1.66k stars 381 forks source link

TF版本与torch版本网络结构不一致,W&D输入问题 #4

Open GrangerZyj opened 2 years ago

GrangerZyj commented 2 years ago

如W&D,Tensorflow版本中会建立sparse cols的1 dim embedding,并与dense cols 一起输入linear中,在pytorch版本中只有dense cols输入到linear中。

但是文章里面不是把特别稀疏的sparse cols输入到linear里面吗,为什么pytorch在linear里面就输入dense cols ?

dense_input, sparse_inputs = x[:, :len(elf.dense_feature_cols)], x[:, len(self.dense_feature_cols):]
sparse_inputs = sparse_inputs.long()
sparse_embeds = [self.embed_layers['embed_' + str(i)](sparse_inputs[:, i])
                for i in range(sparse_inputs.shape[1])]
sparse_embeds = torch.cat(sparse_embeds, axis=-1)

dnn_input = torch.cat([sparse_embeds, dense_input], axis = -1)

wide_out = self.linear(dense_input)

deep_out = self.dnn_network(dnn_input)
deep_out = self.final_linear(deep_out)

outputs = F.Sigmoid(0.5*(wide_out + deep_out))
aobangli commented 1 year ago

我也觉得wide的输入是交叉特征和稀疏特征,请问lz搞懂了吗