Esta é uma implementação de Pytorch do modelo de rede de atenção gráfico (GAT) apresentado por Veličković et. AL (2017, https://arxiv.org/abs/1710.10903).
O repo foi bifurcado inicialmente em https://github.com/tkipf/pygcn. O repositório oficial do GAT (Tensorflow) está disponível em https://github.com/petarv-/gat. Portanto, se você aproveitar o modelo Pygat em sua pesquisa, cite o seguinte:
@article{
velickovic2018graph,
title="{Graph Attention Networks}",
author={Veli{v{c}}kovi{'{c}}, Petar and Cucurull, Guillem and Casanova, Arantxa and Romero, Adriana and Li{`{o}}, Pietro and Bengio, Yoshua},
journal={International Conference on Learning Representations},
year={2018},
url={https://openreview.net/forum?id=rJXMpikCZ},
note={accepted as poster},
}
O mestre da filial contém a implementação do artigo. O ramo similar_impl_tensorflow a implementação do repositório oficial do tensorflow.
Para o mestre da filial, o treinamento da aprendizagem transdutiva na tarefa CORA em um Titan XP leva ~ 0,9 s por época e 10-15 minutos para todo o treinamento (~ 800 épocas). A precisão final está entre 84,2 e 85,3 (obtida em 5 execuções diferentes). Para a filial similar_impl_tensorflow , o treinamento leva menos de 1 minuto e atinge ~ 83,0.
Uma pequena nota sobre as operações iniciais da matriz esparsa de https://github.com/tkipf/pygcn: elas foram removidas. Portanto, o modelo atual leva ~ 7 GB em grama.
Desenvolvemos uma versão esparsa GAT usando Pytorch. Existem instabilidade numericamente devido à função Softmax. Portanto, você precisa inicializar com cuidado. Para usar a versão esparsa GAT, adicione o sinalizador --sparse . O desempenho da versão esparsa é semelhante ao TensorFlow. Em um Titan XP, leva 0,08 ~ 0,14 seg.
O Pygat depende do Python 3.5 e Pytorch 0.4.1 (devido a Torch.sparse_coo_tensor).
Não hesite em entrar em contato com qualquer feedback ou criar problemas/solicitações de puxar.