Skip to content

关于BitGCF代码的疑问 #72

Description

@bachml

BiTGCF代码里有这么一句:

with torch.no_grad():
self.source_user_embedding.weight[self.overlapped_num_users: self.target_num_users].fill_(0)
self.source_item_embedding.weight[self.overlapped_num_items: self.target_num_items].fill_(0)
self.target_user_embedding.weight[self.target_num_users:].fill_(0)
self.target_item_embedding.weight[self.target_num_items:].fill_(0)

根据我的理解,这里代码的作用是把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,这几行似乎对后续训练不产生任何影响,但这几行代码的逻辑还是让我很好奇。
#64

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions