Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

代码实现将预测的关系信息加入了训练 #13

Open
drumzhang opened this issue Mar 8, 2022 · 4 comments
Open

代码实现将预测的关系信息加入了训练 #13

drumzhang opened this issue Mar 8, 2022 · 4 comments

Comments

@drumzhang
Copy link

您好,PathCon这个工作十分的有意义!我很感兴趣!
在复现代码是,我发现代码实现中在model.py的line 106,待预测的关系被加入了edge_list,然后在line 170,当hop=0,i=0时,待预测的关系将会被当作self_vector被聚合,也就是在训练的时候就使用到的待预测的关系信息,但是理论上不应该有这样的信息进入模型训练?请问是这样吗?

@hwwang55
Copy link
Owner

hwwang55 commented Mar 9, 2022

您好,感谢您对我们工作的兴趣!在model.py的71行有定义一个mask_list,它是在118-120行计算的,用途就是把当前的待预测的关系从计算中排除(aggregators.py的第32行)。所以模型是看不到待预测的边的信息的。谢谢!

@drumzhang
Copy link
Author

非常感谢您的回答!但是我发现mask_list只对neighbor做了mask运算(aggregators.py的第32行),没有对self_vector做mask运算,那么当hop=0,i=0的时候,待预测的关系将会被当作self_vector参与运算,作为公式11的$s^i$,如(aggregators.py的第92行),再次感谢您的解答!

@hwwang55
Copy link
Owner

hwwang55 commented Mar 9, 2022

是的,待预测的边本身也会一直在计算和更新自己的embedding。但是注意到:1. 它不会被其它边当成是自己的邻居,所以它不会影响其它边的计算;2. 待预测的边在最后一个GNN里面是不会参与运算的,model.py的123-148行里面,最后一层GNN的self_included都是False,这表明最后一层的GNN不会把边自己的embedding考虑进来,所以待预测的边虽然一直在更新自己的embedding,但是最后一次GNN的时候,模型只考虑了head和tail两个节点的embedding来去预测。

@drumzhang
Copy link
Author

明白啦!再次谢谢您的用心回答!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants