Este es una implementación de Pytorch del modelo de Red de Atención Graph (GAT) presentado por Veličković et. Al (2017, https://arxiv.org/abs/1710.10903).
El repositorio se ha bifurcado inicialmente de https://github.com/tkipf/pygcn. El repositorio oficial del GAT (TensorFlow) está disponible en https://github.com/petarv-/gat. Por lo tanto, si aprovecha el modelo PYGAT en su investigación, cite lo siguiente:
@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},
}
El maestro de rama contiene la implementación del documento. La rama similar_impl_tensorflow la implementación del repositorio oficial de tensorflow.
Para el Maestro de la Rama, el entrenamiento del aprendizaje transductivo en la tarea Cora en un Titan XP toma ~ 0.9 segundos por época y 10-15 minutos para toda la capacitación (~ 800 épocas). La precisión final es entre 84.2 y 85.3 (obtenida en 5 corridas diferentes). Para la rama similar_impl_tensorflow , el entrenamiento lleva menos de 1 minuto y alcanza ~ 83.0.
Una pequeña nota sobre las operaciones iniciales de matriz dispersa de https://github.com/tkipf/pygcn: se han eliminado. Por lo tanto, el modelo actual toma ~ 7GB en gramo.
Desarrollamos una versión escasa GAT usando Pytorch. Hay numéricamente inestabilidad debido a la función Softmax. Por lo tanto, debe inicializarse con cuidado. Para usar la versión escasa GAT, agregue la bandera --sparse . El rendimiento de la versión dispersa es similar con TensorFlow. En un titan XP toma 0.08 ~ 0.14 seg.
Pygat se basa en Python 3.5 y Pytorch 0.4.1 (debido a la antorch.sparse_coo_tensor).
No dude en contactar para obtener comentarios o crear solicitudes de problemas/extracción.