RecBole-CDR
RecBole-CDR copied to clipboard
关于BitGCF代码的疑问
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
也许是我理解错了,但希望作者能帮我解答我的疑惑。谢谢!