-
Notifications
You must be signed in to change notification settings - Fork 3k
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
[Example] add ogc method #6437
[Example] add ogc method #6437
Conversation
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Co-authored-by: Hongzhi (Steve), Chen <chenhongzhi.nkcs@gmail.com>
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
@BarclayII can you double check the implementation? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The math looks simple and I don't have any problems. My concerns are namely in code styles which is uncommon to PyTorch practices. Normally in PyTorch we write training code like this:
class OGC(nn.Module):
def __init__(self, ...):
# model parameter definition...
def forward(self, ...):
# Given the input, how to compute the output (i.e. according to Eq 6 in your paper)
...
model = OGC(...)
def train(model, ...):
optimizer = torch.optim.SGD(...)
for _ in range(epochs):
# compute loss...
# call optimizer...
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment:
|
Co-authored-by: Hongzhi (Steve), Chen <chenhongzhi.nkcs@gmail.com>
Co-authored-by: Hongzhi (Steve), Chen <chenhongzhi.nkcs@gmail.com>
Description
An implementation of OGC method from the paper From Cluster Assumption to Graph Convolution: Graph-based Semi-Supervised Learning Revisited.
OGC is a simple but very powerful graph convolution method, with only one trainable layer. Our initial proposal of the model mainly contains two files: utils.py which defines some basic functions, and main.py which shows the training progress.
Table 1: Node classification accuracy (%).
Table 2: Running time (s).
We use three DGL's built_in datasets (Citeseer, Cora and Pubmed) with their default train/val/test settings. As shown above, OGC has a substantial improvement, with 100-200X high efficiency compared to SOTA deep GNNs.
We are very happy to further improve the code for this great project, and will continue to contribute actively!
Author: Sinuo Xu (undergraduate, @sjtu) advised by Dr. Zheng Wang@SJTU.
Checklist
Please feel free to remove inapplicable items for your PR.