Official implementation of Self-supervised Graph Attention Networks (SuperGAT), ICLR 2021.

Overview

SuperGAT

Official implementation of Self-supervised Graph Attention Networks (SuperGAT). This model is presented at How to Find Your Friendly Neighborhood: Graph Attention Design with Self-Supervision, International Conference on Learning Representations (ICLR), 2021.

Notice

The documented SuperGATConv layer with an example has been merged to the PyTorch Geometric's main branch.

This repository is based on torch==1.4.0+cu100 and torch-geometric==1.4.3, which are somewhat outdated at this point (Feb 2021). If you are using recent PyTorch/CUDA/PyG, we would recommend using the PyG's. If you want to run codes in this repository, please follow #installation.

Installation

# In SuperGAT/
bash install.sh ${CUDA, default is cu100}
  • If you have any trouble installing PyTorch Geometric, please install PyG's dependencies manually.
  • Codes are tested with python 3.7.6 and nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 image.
  • PYG's FAQ might be helpful.

Basics

  • The main train/test code is in SuperGAT/main.py.
  • If you want to see the SuperGAT layer in PyTorch Geometric MessagePassing grammar, refer to SuperGAT/layer.py.
  • If you want to see hyperparameter settings, refer to SuperGAT/args.yaml and SuperGAT/arguments.py.

Run

python3 SuperGAT/main.py \
    --dataset-class Planetoid \
    --dataset-name Cora \
    --custom-key EV13NSO8-ES
 
...

## RESULTS SUMMARY ##
best_test_perf: 0.853 +- 0.003
best_test_perf_at_best_val: 0.851 +- 0.004
best_val_perf: 0.825 +- 0.003
test_perf_at_best_val: 0.849 +- 0.004
## RESULTS DETAILS ##
best_test_perf: [0.851, 0.853, 0.857, 0.852, 0.858, 0.852, 0.847]
best_test_perf_at_best_val: [0.851, 0.849, 0.855, 0.852, 0.858, 0.848, 0.844]
best_val_perf: [0.82, 0.824, 0.83, 0.826, 0.828, 0.824, 0.822]
test_perf_at_best_val: [0.851, 0.844, 0.853, 0.849, 0.857, 0.848, 0.844]
Time for runs (s): 173.85422565042973

The default setting is 7 runs with different random seeds. If you want to change this number, change num_total_runs in the main block of SuperGAT/main.py.

For ogbn-arxiv, use SuperGAT/main_ogb.py.

GPU Setting

There are three arguments for GPU settings (--num-gpus-total, --num-gpus-to-use, --gpu-deny-list). Default values are from the author's machine, so we recommend you modify these values from SuperGAT/args.yaml or by the command line.

  • --num-gpus-total (default 4): The total number of GPUs in your machine.
  • --num-gpus-to-use (default 1): The number of GPUs you want to use.
  • --gpu-deny-list (default: [1, 2, 3]): The ids of GPUs you want to not use.

If you have four GPUs and want to use the first (cuda:0),

python3 SuperGAT/main.py \
    --dataset-class Planetoid \
    --dataset-name Cora \
    --custom-key EV13NSO8-ES \
    --num-gpus-total 4 \
    --gpu-deny-list 1 2 3

Model (--model-name)

Type Model name
GCN GCN
GraphSAGE SAGE
GAT GAT
SuperGATGO GAT
SuperGATDP GAT
SuperGATSD GAT
SuperGATMX GAT

Dataset (--dataset-class, --dataset-name)

Dataset class Dataset name
Planetoid Cora
Planetoid CiteSeer
Planetoid PubMed
PPI PPI
WikiCS WikiCS
WebKB4Univ WebKB4Univ
MyAmazon Photo
MyAmazon Computers
PygNodePropPredDataset ogbn-arxiv
MyCoauthor CS
MyCoauthor Physics
MyCitationFull Cora_ML
MyCitationFull CoraFull
MyCitationFull DBLP
Crocodile Crocodile
Chameleon Chameleon
Flickr Flickr

Custom Key (--custom-key)

Type Custom key (General) Custom key (for PubMed) Custom key (for ogbn-arxiv)
SuperGATGO EV1O8-ES EV1-500-ES -
SuperGATDP EV2O8-ES EV2-500-ES -
SuperGATSD EV3O8-ES EV3-500-ES EV3-ES
SuperGATMX EV13NSO8-ES EV13NSO8-500-ES EV13NS-ES

Other Hyperparameters

See SuperGAT/args.yaml or run $ python3 SuperGAT/main.py --help.

Code Base

Comments
  • Do I have to install the checkpoint model first before execution? Do you have a link?

    Do I have to install the checkpoint model first before execution? Do you have a link?

    Receive an error when executing the demo...

    Here I have used the following command...

    python3 SuperGAT/main.py --dataset-class Planetoid --dataset-name Cora --custom-key EV13NSO8-ES --num-gpus-total 2

    And the errors are

    1. Cannot load model, [Errno 2] No such file or directory: '../checkpoints/GAT-Cora-EV13NSO8-ES/d3d4807'
    2. Then, I get Cast error details: Unable to cast Python instance to C++ type (compile in debug mode for details)

    Questions:

    • Do I have to install the checkpoint model first before execution? Do you have a link?

    • Also, because my based Nvidia driver is newer than the given PyTorch version, could you provide the general commands to install other dependencies aside from the Pytorch geometry?

    I think I have installed all of them, but I may miss some packages then I get this error.....

    Full displayed error:

    Args PPRINT: GAT-Cora-EV13NSO8-ES
            - att_lambda: 11.346574532931719
            - attention_type: prob_mask_only
            - batch_size: 128
            - checkpoint_dir: ../checkpoints
            - custom_key: EV13NSO8-ES
            - data_num_splits: 1
            - data_root: ~/graph-data
            - data_sampler: None
            - data_sampling_num_hops: None
            - data_sampling_size: None
            - dataset_class: Planetoid
            - dataset_name: Cora
            - dropout: 0.6
            - early_stop_patience: 485
            - early_stop_queue_length: 484
            - early_stop_threshold_loss: 0.009317052513589488
            - early_stop_threshold_perf: 0.0011587124922279313
            - edge_sampling_ratio: 0.8
            - epochs: 490
            - gpu_deny_list: [1, 2, 3]
            - heads: 8
            - is_cgat_full: False
            - is_cgat_ssnc: False
            - is_link_gnn: False
            - is_super_gat: True
            - l1_lambda: 0.0
            - l2_lambda: 0.008228864972965771
            - link_lambda: 0.0
            - loss: None
            - lr: 0.005
            - m: 
            - model_name: GAT
            - neg_sample_ratio: 0.5
            - num_gpus_to_use: 1
            - num_gpus_total: 2
            - num_hidden_features: 8
            - num_layers: 2
            - out_heads: 8
            - perf_task_for_val: Node
            - perf_type: accuracy
            - pool_name: None
            - pretraining_noise_ratio: 0.0
            - save_model: False
            - save_plot: False
            - scaling_factor: None
            - seed: 42
            - start_epoch: 0
            - super_gat_criterion: None
            - task_type: Node_Transductive
            - to_undirected: False
            - to_undirected_at_neg: False
            - total_pretraining_epoch: 0
            - use_bn: False
            - use_early_stop: True
            - use_pretraining: False
            - val_interval: 1
            - verbose: 2
    Use GPU the ID of which is [0]
    ## TRIAL 0 ##
    Now loading dataset: Planetoid / Cora
    SuperGATNet(
      (conv1): SuperGAT(1433, 8, heads=8, concat=True, att_type=prob_mask_only, nsr=0.5, pnr=0.0)
      (conv2): SuperGAT(64, 7, heads=8, concat=False, att_type=prob_mask_only, nsr=0.5, pnr=0.0)
    )
    Cannot load model, [Errno 2] No such file or directory: '../checkpoints/GAT-Cora-EV13NSO8-ES/d3d4807'
      0%|                                                                                                        | 0/490 [00:00<?, ?it/s]
    Traceback (most recent call last):
      File "SuperGAT/main.py", line 471, in <module>
        many_seeds_result = run_with_many_seeds(main_args, num_total_runs, gpu_id=alloc_gpu[0])
      File "SuperGAT/main.py", line 403, in run_with_many_seeds
        ret = run(_args, gpu_id=gpu_id, **kwargs)
      File "SuperGAT/main.py", line 307, in run
        train_loss = train_model(running_device, net, train_d, loss_func, adam_optim, epoch=epoch, _args=args)
      File "SuperGAT/main.py", line 97, in train_model
        attention_edge_index=getattr(batch, "train_edge_index", None))
      File "/home/gabby-suwichaya/anaconda3/envs/SuperGAT/lib/python3.6/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
        result = self.forward(*input, **kwargs)
      File "/mnt/HDD4TB3/SuperGAT/SuperGAT/model.py", line 89, in forward
        x = self.conv1(x, edge_index, batch=batch, **kwargs)
      File "/home/gabby-suwichaya/anaconda3/envs/SuperGAT/lib/python3.6/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
        result = self.forward(*input, **kwargs)
      File "/mnt/HDD4TB3/SuperGAT/SuperGAT/layer.py", line 135, in forward
        propagated = self.propagate(edge_index, size=size, x=x)
      File "/home/gabby-suwichaya/anaconda3/envs/SuperGAT/lib/python3.6/site-packages/torch_geometric/nn/conv/message_passing.py", line 237, in propagate
        out = self.message(**msg_kwargs)
      File "/mnt/HDD4TB3/SuperGAT/SuperGAT/layer.py", line 206, in message
        alpha = self._get_attention(edge_index_i, x_i, x_j, size_i)
      File "/mnt/HDD4TB3/SuperGAT/SuperGAT/layer.py", line 276, in _get_attention
        alpha = softmax(alpha, edge_index_i, size_i)
    RuntimeError: softmax() Expected a value of type 'Optional[Tensor]' for argument 'ptr' but instead found type 'int'.
    Position: 2
    Value: 2708
    Declaration: softmax(Tensor src, Tensor? index, Tensor? ptr=None, int? num_nodes=None) -> (Tensor)
    Cast error details: Unable to cast Python instance to C++ type (compile in debug mode for details)
    
    opened by GabbySuwichaya 6
  • Learning the graph structure ?

    Learning the graph structure ?

    Hi, I am working on the application of classification/link prediction. So, far I have looked at the code such as SuperGAT. I have noticed is that the dataset used in SuperGAT (e.g., Citations) seems to already have the graph structure (the set of edges to be considered in training and testing).

    However, in my application, all I have is the data attributes .....without the edges or adjacent matrix or mask to identify which nodes may be connected to which.

    My questions are

    1. Do you have any recommended way to estimate the edges/adjacent matrix? I am looking for time-efficient methods to solve the problem as well?
    2. I am very new to GAT.... But do GAT normally requires the edges of the graph in computing the attention?
    3. Will GAT work better if it considers all the possible pairs of edges or a restricted set of edges?
    4. I have tried to extend SuperGAT to connect all the possible pairs, but the training results are not so good. So, how other works normally handle the training of all the possible pairs?
    5. Also, just to make sure.... is my observation correct ... did I misunderstand anything?
    opened by GabbySuwichaya 5
  • What is the `best_test_perf_at_best_val` ?

    What is the `best_test_perf_at_best_val` ?

    Hello! @dongkwan-kim... After I posted a couple of questions... I just realize that I should say this... Your paper is awesome! When I see the real implementation of your paper, I have got that excitement ... So I totally forgot.

    Yet, again, before I am going to ask a couple more questions... It is that I am just very new to this area and would like to learn it from your work as well.....

    My questions are as follows:

    • Could you please explain a little about the reason why the best_test_perf_at_best_val and test_perf_at_best_val get worse when I choose to save and probably load the previously trained model? (The captured ## RESULTS SUMMARY ## is provided below)

    • What is the insight of knowing the best_test_perf_at_best_val and test_perf_at_best_val ?

    • I am particularly interested in the link prediction task... I would like to know how is your work scales with the number of nodes and edges....? I am looking for a method for my application with 2000-4000 nodes with 200-400 edges.

    ## RESULTS SUMMARY ##
    best_test_perf: 0.854 +- 0.002
    best_test_perf_at_best_val: 0.606 +- 0.383
    best_val_perf: 0.833 +- 0.004
    test_perf_at_best_val: 0.605 +- 0.382
    ## RESULTS DETAILS ##
    best_test_perf: [0.852, 0.854, 0.855, 0.856, 0.856, 0.851, 0.852]
    best_test_perf_at_best_val: [0.85, 0.853, 0.847, 0.852, 0.0, 0.84, 0.0]
    best_val_perf: [0.824, 0.832, 0.834, 0.836, 0.836, 0.836, 0.836]
    test_perf_at_best_val: [0.849, 0.845, 0.847, 0.852, 0.0, 0.84, 0.0]
    Time for runs (s): 107.82641579399933
    
    opened by GabbySuwichaya 4
  • How to enable SparseTensor option?

    How to enable SparseTensor option?

    Hi Dongkwan, I would like to ask how to use the SparseTensor option with our code. Also, do I have to write the message_and_propagate() myself ... Or your code already did that? Best,

    opened by GabbySuwichaya 2
  • How to run your code with link prediction task?

    How to run your code with link prediction task?

    Hello, again... I would like to ask about how to configure your script for running with link prediction tasks... It is just that at the moment, I am a little confused, and I hope you could help explain...?

    • From my understanding, if I want to run your demo with link prediction, I should just set the custom key --custom-key EV13NSO8-ES-Link as in the following command line ...is that right?
    python3 SuperGAT/main.py   --dataset-class Planetoid    --dataset-name Cora   --custom-key EV13NSO8-ES-Link     --num-gpus-total 2  
    
    • However, I get the following error:
    Traceback (most recent call last):
      File "SuperGAT/main.py", line 475, in <module>
        many_seeds_result = run_with_many_seeds(main_args, num_total_runs, gpu_id=alloc_gpu[0])
      File "SuperGAT/main.py", line 407, in run_with_many_seeds
        ret = run(_args, gpu_id=gpu_id, **kwargs)
      File "SuperGAT/main.py", line 321, in run
        run_link_prediction=(perf_task_for_val == "Link"))
      File "SuperGAT/main.py", line 202, in test_model
        val_or_test_edge_y = batch.val_edge_y if val_or_test == "val" else batch.test_edge_y
    AttributeError: 'Data' object has no attribute 'val_edge_y'
    
    

    Also, I have noticed that the option is_link_gnn=False .... What does this mean?

    Here is the print out of the options:

            - att_lambda: 11.346574532931719
            - attention_type: prob_mask_only
            - batch_size: 128
            - checkpoint_dir: ../SuperGAT_checkpoints
            - custom_key: EV13NSO8-ES-Link
            - data_num_splits: 1
            - data_root: ~/graph-data
            - data_sampler: None
            - data_sampling_num_hops: None
            - data_sampling_size: None
            - dataset_class: Planetoid
            - dataset_name: Cora
            - dropout: 0.6
            - early_stop_patience: 485
            - early_stop_queue_length: 484
            - early_stop_threshold_loss: 0.009317052513589488
            - early_stop_threshold_perf: 0.0011587124922279313
            - edge_sampling_ratio: 0.8
            - epochs: 490
            - gpu_deny_list: [1, 2, 3]
            - heads: 8
            - is_cgat_full: False
            - is_cgat_ssnc: False
            - is_link_gnn: False
            - is_super_gat: True
            - l1_lambda: 0.0
            - l2_lambda: 0.008228864972965771
            - link_lambda: 0.0
            - loss: None
            - lr: 0.005
            - m: 
            - model_name: GAT
            - neg_sample_ratio: 0.5
            - num_gpus_to_use: 1
            - num_gpus_total: 2
            - num_hidden_features: 8
            - num_layers: 2
            - out_heads: 8
            - perf_task_for_val: Link
            - perf_type: accuracy
            - pool_name: None
            - pretraining_noise_ratio: 0.0
            - save_model: False
            - save_plot: True
            - scaling_factor: None
            - seed: 42
            - start_epoch: 0
            - super_gat_criterion: None
            - task_type: Link_Prediction
            - to_undirected: False
            - to_undirected_at_neg: False
            - total_pretraining_epoch: 0
            - use_bn: False
            - use_early_stop: True
            - use_pretraining: False
            - val_interval: 1
            - verbose: 0
            
    
    opened by GabbySuwichaya 2
  • Bump pillow from 7.0.0 to 8.2.0

    Bump pillow from 7.0.0 to 8.2.0

    Bumps pillow from 7.0.0 to 8.2.0.

    Release notes

    Sourced from pillow's releases.

    8.2.0

    https://pillow.readthedocs.io/en/stable/releasenotes/8.2.0.html

    Changes

    Dependencies

    Deprecations

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    8.2.0 (2021-04-01)

    • Added getxmp() method #5144 [UrielMaD, radarhere]

    • Add ImageShow support for GraphicsMagick #5349 [latosha-maltba, radarhere]

    • Do not load transparent pixels from subsequent GIF frames #5333 [zewt, radarhere]

    • Use LZW encoding when saving GIF images #5291 [raygard]

    • Set all transparent colors to be equal in quantize() #5282 [radarhere]

    • Allow PixelAccess to use Python int when parsing x and y #5206 [radarhere]

    • Removed Image._MODEINFO #5316 [radarhere]

    • Add preserve_tone option to autocontrast #5350 [elejke, radarhere]

    • Fixed linear_gradient and radial_gradient I and F modes #5274 [radarhere]

    • Add support for reading TIFFs with PlanarConfiguration=2 #5364 [kkopachev, wiredfool, nulano]

    • Deprecated categories #5351 [radarhere]

    • Do not premultiply alpha when resizing with Image.NEAREST resampling #5304 [nulano]

    • Dynamically link FriBiDi instead of Raqm #5062 [nulano]

    • Allow fewer PNG palette entries than the bit depth maximum when saving #5330 [radarhere]

    • Use duration from info dictionary when saving WebP #5338 [radarhere]

    • Stop flattening EXIF IFD into getexif() #4947 [radarhere, kkopachev]

    ... (truncated)

    Commits
    • e0e353c 8.2.0 version bump
    • ee635be Merge pull request #5377 from hugovk/security-and-release-notes
    • 694c84f Fix typo [ci skip]
    • 8febdad Review, typos and lint
    • fea4196 Reorder, roughly alphabetic
    • 496245a Fix BLP DOS -- CVE-2021-28678
    • 22e9bee Fix DOS in PSDImagePlugin -- CVE-2021-28675
    • ba65f0b Fix Memory DOS in ImageFont
    • bb6c11f Fix FLI DOS -- CVE-2021-28676
    • 5a5e6db Fix EPS DOS on _open -- CVE-2021-28677
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump urllib3 from 1.25.8 to 1.26.5

    Bump urllib3 from 1.25.8 to 1.26.5

    Bumps urllib3 from 1.25.8 to 1.26.5.

    Release notes

    Sourced from urllib3's releases.

    1.26.5

    :warning: IMPORTANT: urllib3 v2.0 will drop support for Python 2: Read more in the v2.0 Roadmap

    • Fixed deprecation warnings emitted in Python 3.10.
    • Updated vendored six library to 1.16.0.
    • Improved performance of URL parser when splitting the authority component.

    If you or your organization rely on urllib3 consider supporting us via GitHub Sponsors

    1.26.4

    :warning: IMPORTANT: urllib3 v2.0 will drop support for Python 2: Read more in the v2.0 Roadmap

    • Changed behavior of the default SSLContext when connecting to HTTPS proxy during HTTPS requests. The default SSLContext now sets check_hostname=True.

    If you or your organization rely on urllib3 consider supporting us via GitHub Sponsors

    1.26.3

    :warning: IMPORTANT: urllib3 v2.0 will drop support for Python 2: Read more in the v2.0 Roadmap

    • Fixed bytes and string comparison issue with headers (Pull #2141)

    • Changed ProxySchemeUnknown error message to be more actionable if the user supplies a proxy URL without a scheme (Pull #2107)

    If you or your organization rely on urllib3 consider supporting us via GitHub Sponsors

    1.26.2

    :warning: IMPORTANT: urllib3 v2.0 will drop support for Python 2: Read more in the v2.0 Roadmap

    • Fixed an issue where wrap_socket and CERT_REQUIRED wouldn't be imported properly on Python 2.7.8 and earlier (Pull #2052)

    1.26.1

    :warning: IMPORTANT: urllib3 v2.0 will drop support for Python 2: Read more in the v2.0 Roadmap

    • Fixed an issue where two User-Agent headers would be sent if a User-Agent header key is passed as bytes (Pull #2047)

    1.26.0

    :warning: IMPORTANT: urllib3 v2.0 will drop support for Python 2: Read more in the v2.0 Roadmap

    • Added support for HTTPS proxies contacting HTTPS servers (Pull #1923, Pull #1806)

    • Deprecated negotiating TLSv1 and TLSv1.1 by default. Users that still wish to use TLS earlier than 1.2 without a deprecation warning should opt-in explicitly by setting ssl_version=ssl.PROTOCOL_TLSv1_1 (Pull #2002) Starting in urllib3 v2.0: Connections that receive a DeprecationWarning will fail

    • Deprecated Retry options Retry.DEFAULT_METHOD_WHITELIST, Retry.DEFAULT_REDIRECT_HEADERS_BLACKLIST and Retry(method_whitelist=...) in favor of Retry.DEFAULT_ALLOWED_METHODS, Retry.DEFAULT_REMOVE_HEADERS_ON_REDIRECT, and Retry(allowed_methods=...) (Pull #2000) Starting in urllib3 v2.0: Deprecated options will be removed

    ... (truncated)

    Changelog

    Sourced from urllib3's changelog.

    1.26.5 (2021-05-26)

    • Fixed deprecation warnings emitted in Python 3.10.
    • Updated vendored six library to 1.16.0.
    • Improved performance of URL parser when splitting the authority component.

    1.26.4 (2021-03-15)

    • Changed behavior of the default SSLContext when connecting to HTTPS proxy during HTTPS requests. The default SSLContext now sets check_hostname=True.

    1.26.3 (2021-01-26)

    • Fixed bytes and string comparison issue with headers (Pull #2141)

    • Changed ProxySchemeUnknown error message to be more actionable if the user supplies a proxy URL without a scheme. (Pull #2107)

    1.26.2 (2020-11-12)

    • Fixed an issue where wrap_socket and CERT_REQUIRED wouldn't be imported properly on Python 2.7.8 and earlier (Pull #2052)

    1.26.1 (2020-11-11)

    • Fixed an issue where two User-Agent headers would be sent if a User-Agent header key is passed as bytes (Pull #2047)

    1.26.0 (2020-11-10)

    • NOTE: urllib3 v2.0 will drop support for Python 2. Read more in the v2.0 Roadmap <https://urllib3.readthedocs.io/en/latest/v2-roadmap.html>_.

    • Added support for HTTPS proxies contacting HTTPS servers (Pull #1923, Pull #1806)

    • Deprecated negotiating TLSv1 and TLSv1.1 by default. Users that still wish to use TLS earlier than 1.2 without a deprecation warning

    ... (truncated)

    Commits
    • d161647 Release 1.26.5
    • 2d4a3fe Improve performance of sub-authority splitting in URL
    • 2698537 Update vendored six to 1.16.0
    • 07bed79 Fix deprecation warnings for Python 3.10 ssl module
    • d725a9b Add Python 3.10 to GitHub Actions
    • 339ad34 Use pytest==6.2.4 on Python 3.10+
    • f271c9c Apply latest Black formatting
    • 1884878 [1.26] Properly proxy EOF on the SSLTransport test suite
    • a891304 Release 1.26.4
    • 8d65ea1 Merge pull request from GHSA-5phf-pp7p-vc2r
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump pillow from 7.0.0 to 8.1.1

    Bump pillow from 7.0.0 to 8.1.1

    Bumps pillow from 7.0.0 to 8.1.1.

    Release notes

    Sourced from pillow's releases.

    8.1.1

    https://pillow.readthedocs.io/en/stable/releasenotes/8.1.1.html

    8.1.0

    https://pillow.readthedocs.io/en/stable/releasenotes/8.1.0.html

    Changes

    Dependencies

    Deprecations

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    8.1.1 (2021-03-01)

    • Use more specific regex chars to prevent ReDoS. CVE-2021-25292 [hugovk]

    • Fix OOB Read in TiffDecode.c, and check the tile validity before reading. CVE-2021-25291 [wiredfool]

    • Fix negative size read in TiffDecode.c. CVE-2021-25290 [wiredfool]

    • Fix OOB read in SgiRleDecode.c. CVE-2021-25293 [wiredfool]

    • Incorrect error code checking in TiffDecode.c. CVE-2021-25289 [wiredfool]

    • PyModule_AddObject fix for Python 3.10 #5194 [radarhere]

    8.1.0 (2021-01-02)

    • Fix TIFF OOB Write error. CVE-2020-35654 #5175 [wiredfool]

    • Fix for Read Overflow in PCX Decoding. CVE-2020-35653 #5174 [wiredfool, radarhere]

    • Fix for SGI Decode buffer overrun. CVE-2020-35655 #5173 [wiredfool, radarhere]

    • Fix OOB Read when saving GIF of xsize=1 #5149 [wiredfool]

    • Makefile updates #5159 [wiredfool, radarhere]

    • Add support for PySide6 #5161 [hugovk]

    • Use disposal settings from previous frame in APNG #5126 [radarhere]

    • Added exception explaining that repr_png saves to PNG #5139 [radarhere]

    • Use previous disposal method in GIF load_end #5125 [radarhere]

    ... (truncated)

    Commits
    • 741d874 8.1.1 version bump
    • 179cd1c Added 8.1.1 release notes to index
    • 7d29665 Update CHANGES.rst [ci skip]
    • d25036f Credits
    • 973a4c3 Release notes for 8.1.1
    • 521dab9 Use more specific regex chars to prevent ReDoS
    • 8b8076b Fix for CVE-2021-25291
    • e25be1e Fix negative size read in TiffDecode.c
    • f891baa Fix OOB read in SgiRleDecode.c
    • cbfdde7 Incorrect error code checking in TiffDecode.c
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump pillow from 7.0.0 to 7.1.0

    Bump pillow from 7.0.0 to 7.1.0

    Bumps pillow from 7.0.0 to 7.1.0.

    Release notes

    Sourced from pillow's releases.

    7.1.0

    https://pillow.readthedocs.io/en/stable/releasenotes/7.1.0.html

    Changelog

    Sourced from pillow's changelog.

    7.1.0 (2020-04-01)

    • Fix multiple OOB reads in FLI decoding #4503 [wiredfool]

    • Fix buffer overflow in SGI-RLE decoding #4504 [wiredfool, hugovk]

    • Fix bounds overflow in JPEG 2000 decoding #4505 [wiredfool]

    • Fix bounds overflow in PCX decoding #4506 [wiredfool]

    • Fix 2 buffer overflows in TIFF decoding #4507 [wiredfool]

    • Add APNG support #4243 [pmrowla, radarhere, hugovk]

    • ImageGrab.grab() for Linux with XCB #4260 [nulano, radarhere]

    • Added three new channel operations #4230 [dwastberg, radarhere]

    • Prevent masking of Image reduce method in Jpeg2KImagePlugin #4474 [radarhere, homm]

    • Added reading of earlier ImageMagick PNG EXIF data #4471 [radarhere]

    • Fixed endian handling for I;16 getextrema #4457 [radarhere]

    • Release buffer if function returns prematurely #4381 [radarhere]

    • Add JPEG comment to info dictionary #4455 [radarhere]

    • Fix size calculation of Image.thumbnail() #4404 [orlnub123]

    • Fixed stroke on FreeType < 2.9 #4401 [radarhere]

    • If present, only use alpha channel for bounding box #4454 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • About label-agreement

    About label-agreement

    1: and are different expressions that calculate the same attention. But , why does sigma operate on DP or not GO. 2:When you answered question 1 in the experiment section, you cited (link), I'd like to ask you how to calculate the last picture of entropy visualization (link), Notes in the text: one can see that the attention values learned is quite similar to uniform distribution (i.e, all neighbors are equally important). Does it count the node entropy of a certain layer? Isn't the uniform distribution a straight line? It doesn't seem to be evenly distributed. What is their connection? This question may help me understand the significance of introducing uniform distribution in the illustrations of your paper figure 2. It is said in the figure that the original gat captures the label consistency better than the DP mode. Why not consider adding SD and MX for comparison, or does this part just show that go is better than DP.

    It takes up your time. Thank you very much for your answer!

    opened by DuanhaoranCC 0
  • _pickle.UnpicklingError: invalid load key, '\x0a'

    _pickle.UnpicklingError: invalid load key, '\x0a'

    hello,I meet this error: Traceback (most recent call last): File "SuperGAT/main.py", line 471, in many_seeds_result = run_with_many_seeds(main_args, num_total_runs, gpu_id=alloc_gpu[0]) File "SuperGAT/main.py", line 403, in run_with_many_seeds ret = run(_args, gpu_id=gpu_id, **kwargs) File "SuperGAT/main.py", line 286, in run **dataset_kwargs, File "/data1/yangyi/SuperGAT/SuperGAT/data.py", line 634, in get_dataset_or_loader dataset = dataset_cls(root=root, **kwargs) File "/data1/yangyi/anaconda3/envs/pt1.4/lib/python3.6/site-packages/torch_geometric/datasets/planetoid.py", line 33, in init super(Planetoid, self).init(root, transform, pre_transform) File "/data1/yangyi/anaconda3/envs/pt1.4/lib/python3.6/site-packages/torch_geometric/data/in_memory_dataset.py", line 53, in init pre_filter) File "/data1/yangyi/anaconda3/envs/pt1.4/lib/python3.6/site-packages/torch_geometric/data/dataset.py", line 93, in init self._process() File "/data1/yangyi/anaconda3/envs/pt1.4/lib/python3.6/site-packages/torch_geometric/data/dataset.py", line 166, in _process self.process() File "/data1/yangyi/anaconda3/envs/pt1.4/lib/python3.6/site-packages/torch_geometric/datasets/planetoid.py", line 58, in process data = read_planetoid_data(self.raw_dir, self.name) File "/data1/yangyi/anaconda3/envs/pt1.4/lib/python3.6/site-packages/torch_geometric/io/planetoid.py", line 19, in read_planetoid_data items = [read_file(folder, prefix, name) for name in names] File "/data1/yangyi/anaconda3/envs/pt1.4/lib/python3.6/site-packages/torch_geometric/io/planetoid.py", line 19, in items = [read_file(folder, prefix, name) for name in names] File "/data1/yangyi/anaconda3/envs/pt1.4/lib/python3.6/site-packages/torch_geometric/io/planetoid.py", line 66, in read_file out = pickle.load(f, encoding='latin1') _pickle.UnpicklingError: invalid load key, '\x0a'. Do you know how to solve it?my python version is 3.6,Thanks a lot。

    opened by yang1997yi 1
SSD: A Unified Framework for Self-Supervised Outlier Detection [ICLR 2021]

SSD: A Unified Framework for Self-Supervised Outlier Detection [ICLR 2021] Pdf: https://openreview.net/forum?id=v5gjXpmR8J Code for our ICLR 2021 pape

Princeton INSPIRE Research Group 113 Nov 27, 2022
Locally Enhanced Self-Attention: Rethinking Self-Attention as Local and Context Terms

LESA Introduction This repository contains the official implementation of Locally Enhanced Self-Attention: Rethinking Self-Attention as Local and Cont

Chenglin Yang 20 Dec 31, 2021
Official Pytorch Implementation of Relational Self-Attention: What's Missing in Attention for Video Understanding

Relational Self-Attention: What's Missing in Attention for Video Understanding This repository is the official implementation of "Relational Self-Atte

mandos 43 Dec 7, 2022
A PyTorch implementation of "Multi-Scale Contrastive Siamese Networks for Self-Supervised Graph Representation Learning", IJCAI-21

MERIT A PyTorch implementation of our IJCAI-21 paper Multi-Scale Contrastive Siamese Networks for Self-Supervised Graph Representation Learning. Depen

Graph Analysis & Deep Learning Laboratory, GRAND 32 Jan 2, 2023
A Research-oriented Federated Learning Library and Benchmark Platform for Graph Neural Networks. Accepted to ICLR'2021 - DPML and MLSys'21 - GNNSys workshops.

FedGraphNN: A Federated Learning System and Benchmark for Graph Neural Networks A Research-oriented Federated Learning Library and Benchmark Platform

FedML-AI 175 Dec 1, 2022
Expressive Power of Invariant and Equivaraint Graph Neural Networks (ICLR 2021)

Expressive Power of Invariant and Equivaraint Graph Neural Networks In this repository, we show how to use powerful GNN (2-FGNN) to solve a graph alig

Marc Lelarge 36 Dec 12, 2022
The Self-Supervised Learner can be used to train a classifier with fewer labeled examples needed using self-supervised learning.

Published by SpaceML • About SpaceML • Quick Colab Example Self-Supervised Learner The Self-Supervised Learner can be used to train a classifier with

SpaceML 92 Nov 30, 2022
Official PyTorch implementation for paper Context Matters: Graph-based Self-supervised Representation Learning for Medical Images

Context Matters: Graph-based Self-supervised Representation Learning for Medical Images Official PyTorch implementation for paper Context Matters: Gra

null 49 Nov 23, 2022
Official implementation of "Motif-based Graph Self-Supervised Learning forMolecular Property Prediction"

Motif-based Graph Self-Supervised Learning for Molecular Property Prediction Official Pytorch implementation of NeurIPS'21 paper "Motif-based Graph Se

zaixi 71 Dec 20, 2022
An official PyTorch implementation of the TKDE paper "Self-Supervised Graph Representation Learning via Topology Transformations".

Self-Supervised Graph Representation Learning via Topology Transformations This repository is the official PyTorch implementation of the following pap

Hsiang Gao 2 Oct 31, 2022
Apply Graph Self-Supervised Learning methods to graph-level task(TUDataset, MolculeNet Datset)

Graphlevel-SSL Overview Apply Graph Self-Supervised Learning methods to graph-level task(TUDataset, MolculeNet Dataset). It is unified framework to co

JunSeok 8 Oct 15, 2021
A PyTorch implementation of "Predict then Propagate: Graph Neural Networks meet Personalized PageRank" (ICLR 2019).

APPNP ⠀ A PyTorch implementation of Predict then Propagate: Graph Neural Networks meet Personalized PageRank (ICLR 2019). Abstract Neural message pass

Benedek Rozemberczki 329 Dec 30, 2022
Official PyTorch implementation of "AASIST: Audio Anti-Spoofing using Integrated Spectro-Temporal Graph Attention Networks"

AASIST This repository provides the overall framework for training and evaluating audio anti-spoofing systems proposed in 'AASIST: Audio Anti-Spoofing

Clova AI Research 56 Jan 2, 2023
Implementation of Self-supervised Graph-level Representation Learning with Local and Global Structure (ICML 2021).

Self-supervised Graph-level Representation Learning with Local and Global Structure Introduction This project is an implementation of ``Self-supervise

MilaGraph 50 Dec 9, 2022
Improving Convolutional Networks via Attention Transfer (ICLR 2017)

Attention Transfer PyTorch code for "Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Tran

Sergey Zagoruyko 1.4k Dec 23, 2022
Official implementation of NeurIPS 2021 paper "Contextual Similarity Aggregation with Self-attention for Visual Re-ranking"

CSA: Contextual Similarity Aggregation with Self-attention for Visual Re-ranking PyTorch training code for CSA (Contextual Similarity Aggregation). We

Hui Wu 19 Oct 21, 2022
Implementation of the 😇 Attention layer from the paper, Scaling Local Self-Attention For Parameter Efficient Visual Backbones

HaloNet - Pytorch Implementation of the Attention layer from the paper, Scaling Local Self-Attention For Parameter Efficient Visual Backbones. This re

Phil Wang 189 Nov 22, 2022
Implementation of a memory efficient multi-head attention as proposed in the paper, "Self-attention Does Not Need O(n²) Memory"

Memory Efficient Attention Pytorch Implementation of a memory efficient multi-head attention as proposed in the paper, Self-attention Does Not Need O(

Phil Wang 180 Jan 5, 2023
This is the repository for the AAAI 21 paper [Contrastive and Generative Graph Convolutional Networks for Graph-based Semi-Supervised Learning].

CG3 This is the repository for the AAAI 21 paper [Contrastive and Generative Graph Convolutional Networks for Graph-based Semi-Supervised Learning]. R

null 12 Oct 28, 2022