RUCAIBox / RecBole-CDR

This is a library built upon RecBole for cross-domain recommendation algorithms
MIT License
82 stars 12 forks source link

关于BitGCF代码的疑问 #72

Open bachml opened 1 month ago

bachml commented 1 month ago

BiTGCF代码里有这么一句:

https://github.com/RUCAIBox/RecBole-CDR/blob/d339918ee5f2fb2d3ef38e874f2e04c01bc19e9d/recbole_cdr/model/cross_domain_recommender/bitgcf.py#L59-L64

根据我的理解,这里代码的作用是把source_user_embedding中的target domain user embedding给mask掉,请问user_embedding中source user和target user的排列顺序是怎样的?

如果source_user_embedding的user是按照 [只出现在source domain user] [overlap user] [只出现在target domain user]这个顺序排列的,那么对应的在source_user_embedding里mask掉target domain user的index应该是 self.source_user_embedding.weight[self.source_num_users: ].fill_(0)

而在在target_user_embedding里mask掉source domain user的index应该是 self.target_user_embedding.weight[:self.source_num_users - self.overlapped_num_users].fill_(0)

我不是很清楚现在代码中的逻辑是对应怎么的user排列顺序。

另外我看几行代码对embedding fill(0)的维度似乎也不对?

根据这个issue,这几行似乎对后续训练不产生任何影响,但这几行代码的逻辑还是让我很好奇。 https://github.com/RUCAIBox/RecBole-CDR/issues/64

也许是我理解错了,但希望作者能帮我解答我的疑惑。谢谢!