Он состоит из различных методов глубокого обучения на графах и других нерегулярных структурах, также известных как геометрическое глубокое обучение, из различных опубликованных работ. Кроме того, он состоит из простого в использовании мини-пакетного загрузчика для многих небольших и одиночных гигантских графиков, поддержки нескольких графических процессоров, большого количества общих эталонных наборов данных (основанных на простых интерфейсах для создания собственных) и полезных преобразований, как для обучения на произвольных графах, так и на 3D-сетках или облаках точек. Нажмите здесь, чтобы присоединиться к нашему сообществу Slack!
PyTorch Geometric делает реализацию графовых нейронных сетей легким делом (см. здесь сопроводительный учебник). Например, это все, что требуется для реализации краевого сверточного слоя:
import torch from torch.nn import Sequential as Seq, Linear as Lin, ReLU from torch_geometric.nn import MessagePassing class EdgeConv(MessagePassing): def __init__(self, F_in, F_out): super(EdgeConv, self).__init__(aggr='max') # "Max" aggregation. self.mlp = Seq(Lin(2 * F_in, F_out), ReLU(), Lin(F_out, F_out)) def forward(self, x, edge_index): # x has shape [N, F_in] # edge_index has shape [2, E] return self.propagate(edge_index, x=x) # shape [N, F_out] def message(self, x_i, x_j): # x_i has shape [E, F_in] # x_j has shape [E, F_in] edge_features = torch.cat([x_i, x_j - x_i], dim=1) # shape [E, 2 * F_in] return self.mlp(edge_features) # shape [E, F_out]
В настоящее время подробно реализуются следующие методы:
- SplineConv от Fey et al.: SplineCNN: быстрое геометрическое глубокое обучение с непрерывными ядрами B-сплайнов (CVPR 2018) [Example1, Example2]
- GCNConv от Kipf и Welling: Полууправляемая классификация с Графовыми сверточными сетями (ICLR 2017) [пример]
- GCN2Conv от Chen et al.: Простые и глубокие графовые сверточные сети (ICML 2020) [Example1, Example2]
- ChebConv от Defferrard et al.: Сверточные нейронные сети на графах с быстрой локализованной спектральной фильтрацией (NIPS 2016) [пример]
- NNConv от Gilmer et al.: Передача нейронных сообщений для квантовой химии (ICML 2017) [ Пример 1 , Пример 2]
- CGConv от Xie and Grossman: Crystal Graph Convolutional Neural Networks for an Accurate and Interpretable Prediction of Material Properties (Physical Review Letters 120, 2018)
- ECConv от Симоновского и Комодакиса: реберно-обусловленная свертка на графах (CVPR 2017)
- GATConv от Veli?kovi? et al.: Graph Attention Networks (ICLR 2018) [Пример]
- TransformerConv от Shi et al.: Прогнозирование маскированной метки: унифицированная модель передачи сообщений для Полууправляемой классификации (CoRR 2020)
- SAGEConv от Hamilton et al.: Индуктивное обучение представлению на больших графах (NIPS 2017) [Example1, Example2, Example3]
- GraphConv от, например, Morris et al.: Weisfeiler and Leman Go Neural: Higher-order Graph Neural Networks (AAAI 2019)
- GatedGraphConv от Li et al.: Нейронные сети с последовательностью стробированных графов (ICLR 2016)
- GINConv от Xu et al.: Насколько сильны графовые нейронные сети? (ICLR 2019) [пример]
- GINEConv от Hu et al.: Стратегии предварительной подготовки графовых нейронных сетей (ICLR 2020)
- ARMAConv от Bianchi et al.: Графовые нейронные сети со сверточными фильтрами ARMA (CoRR 2019) [пример]
- SGConv от Wu et al.: Упрощение Графовых Сверточных Сетей (CoRR 2019) [Пример]
- APPNP от Klicpera et al.: Предсказать, а затем распространить: графовые нейронные сети соответствуют персонализированному PageRank (ICLR 2019) [пример]
- MFConv от Duvenaud et al.: Сверточные сети на графах для изучения молекулярных отпечатков пальцев (NIPS 2015)
- AGNNConv от Thekumparampil et al.: Нейронная сеть на основе графа внимания для Полууправляемого обучения (CoRR 2017) [пример]
- TAGConv от Du et al.: Топология Адаптивных Графовых Сверточных Сетей (CoRR 2017) [Пример]
- PNAConv от Corso et al.: Агрегация основных окрестностей для графовых сетей (CoRR 2020) [пример]
- RGCNConv от Schlichtkrull et al.: Моделирование реляционных данных с Графовыми сверточными сетями (ESWC 2018) [Пример]
- SignedConv от Derr et al.: Подписанная графовая сверточная сеть (ICDM 2018) [Пример]
- DNAConv от Fey: Just Jump: динамическая агрегация окрестностей в графовых нейронных сетях (ICLR-W 2019) [пример]
- PointConv (включая итеративную выборку самой дальней точки, генерацию динамического графика на основе ближайшего соседа или максимального расстоянияи интерполяцию k-NN для апсэмплинга) из Qi et al.: PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation (CVPR 2017) и PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space (NIPS 2017) [Example1, Example2]
- EdgeConv от Wang et al.: Динамический график CNN для обучения на облаках точек (CoRR, 2018) [Example1, Example2]
- XConv от Li et al.: PointCNN: Свертка На X-Преобразованных Точках (NeurIPS 2018) [Пример]
- PPFConv от Deng et al.: PPFNet: глобальные контекстно-зависимые локальные функции для надежного сопоставления 3D-точек (CVPR 2018)
- GMMConv от Monti et al.: Геометрическое глубокое обучение на графах и многообразиях с использованием смешанной модели CNNs (CVPR 2017)
- FeaStConv от Verma et al.: FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis (CVPR 2018)
- HypergraphConv от Bai et al.: Свертка гиперграфа и внимание Гиперграфа (CoRR 2019)
- GravNetConv от Qasim et al.: Изучение представлений нерегулярной геометрии детектора частиц с помощью взвешенных по расстоянию графовых сетей (European Physics Journal C, 2019)
- Металлический слой для построения любого вида Графовой сети, аналогичной библиотеке графовых сетей TensorFlow от Battaglia et al.: Реляционные индуктивные предубеждения, глубокое обучение и графовые сети (CoRR 2018)
- Глобальное внимание от Li et al.: Нейронные сети с последовательностью стробированных графов (ICLR 2016) [пример]
- Set2Set от Vinyals et al.: Порядок имеет значение: последовательность к последовательности для наборов (ICLR 2016) [пример]
- Сортировка пула из Zhang et al.: Сквозная архитектура глубокого обучения для классификации графов (AAAI 2018) [Пример]
- Плотное Дифференцируемое объединение от Ying et al.: Обучение представлению иерархических графов с дифференцируемым объединением (NeurIPS 2018) [Пример]
- Плотное объединение мясорубок от Bianchi et al.: MinCUT Pooling in Graph Neural Networks (CoRR 2019) [пример]
- Graclus Pooling от Dhillon et al.: Взвешенные графические разрезы без собственных векторов: многоуровневый подход (PAMI 2007) [пример]
- Voxel Grid Pooling from, E.G., Simonovsky and Komodakis: Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graphs (CVPR 2017) [пример]
- Top-K Pooling from Gao and Ji: Graph U-Nets (ICML 2019), Cangea et al.: К классификаторам разреженных иерархических графов (NeurIPS-W 2018)и Князеву и др.: Понимание внимания и обобщение в графовых нейронных сетях (ICLR-W 2019) [пример]
- SAG Pooling от Lee et al.: Self-Attention Graph Pooling (ICML 2019) and Knyazev et al.: Понимание внимания и обобщение в графовых нейронных сетях (ICLR-W 2019) [пример]
- Объединение краев от Diehl et al.: К объединению графов путем сжатия ребер (ICML-W 2019) и Diehl: объединение ребер для графовых нейронных сетей (CoRR 2019) [пример]
- ASAPooling от Ranjan et al.: ASAP: Adaptive Structure Aware Pooling for Learning Hierarchical Graph Representations (AAAI 2020) [пример]
- Локальный профиль степени от Cai и Wang: простая, но эффективная базовая линия для классификации графов без атрибутов (CoRR 2018)
- Прыжковые знания от Xu et al.: Обучение представлению на графах с прыгающими сетями знаний (ICML 2018) [Пример]
- Node2Vec от Grover и Leskovec: node2vec: Scalable Feature Learning for Networks (KDD 2016) [пример]
- MetaPath2Vec от Dong et al.: metapath2vec: масштабируемое обучение представлению для гетерогенных сетей (KDD 2017) [пример]
- Deep Graph Infomax от Veli?kovi? et al.: Deep Graph Infomax (ICLR 2019) [пример]
- Все варианты графовых автоэнкодеров и вариационных автоэнкодеров от:
- SEAL from Zhang and Chen: Link Prediction Based on Graph Neural Networks (NeurIPS 2018)
- Ренет из Jin et al.: Рекуррентная событийная сеть для рассуждений над графами временных знаний (ICLR-W 2019) [пример]
- GraphUNet от Gao and Ji: Graph U-Nets (ICML 2019) [пример]
- SchNet from Sch?tt et al.: SchNet: сверточная нейронная сеть с непрерывным фильтром для моделирования квантовых взаимодействий (NIPS 2017) [пример]
- DimeNet от Klicpera et al.: Направленная передача сообщений для молекулярных графов (ICLR 2020) [пример]
- DeepGCN и GENConv от Li et al.: DeepGCNs: могут ли GCNs идти так же глубоко, как CNNs? (ICCV 2019) и DeeperGCN: все, что вам нужно для обучения более глубоких GCNs (CoRR 2020) [пример]
- Neighboursampler из Hamilton et al.: Индуктивное обучение представлению на больших графах (NIPS 2017) [Example1, Example2, Example3]
- ClusterGCN от Chiang et al.: Cluster-GCN: эффективный алгоритм обучения глубоких и больших графовых сверточных сетей (KDD 2019) [Example1, Example2]
- GraphSAINT от Zeng et al.: GraphSAINT: метод индуктивного обучения на основе выборки графов (ICLR 2020) [пример]
- GDC от Klicpera et al.: Диффузия Улучшает Обучение Графов (NeurIPS 2019) [Пример]
- Знак от Росси и др.: Знак: масштабируемый начальный Граф нейронных сетей (CoRR 2020) [пример]
- GraphSizeNorm от Dwivedi et al.: Бенчмаркинг Графовых Нейронных Сетей (CoRR 2020)
- GNNExplainer от Ying et al.: GNNExplainer: генерация объяснений для графовых нейронных сетей (NeurIPS 2019) [пример]
- DropEdge от Rong et al.: DropEdge: Towards Deep Graph Convolutional Networks on Node Classification (ICLR 2020)
- PairNorm from Zhao and Akoglu: PairNorm: борьба с переохлаждением в GNNs (ICLR 2020)
- Разложение дерева по данным Jin et al.: Вариационный автоэнкодер дерева соединений для генерации молекулярных графов (ICML 2018)
Ознакомьтесь с нашей документацией, чтобы узнать больше об установке, обработке данных, создании наборов данных и полном списке реализованных методов, преобразований и наборов данных. Для быстрого начала ознакомьтесь с нашими примерами в examples/
справочнике.
Если вы заметили что-то неожиданное, пожалуйста, откройте проблему и сообщите нам об этом. Если вам не хватает определенного метода, не стесняйтесь открывать запрос на функцию. Мы мотивированы постоянно делать PyTorch геометрическим еще лучше.
Установка
Мы предоставляем pip-диски для всех основных комбинаций OS/PyTorch / CUDA, см. здесь.
PyTorch 1.7.0
Чтобы установить двоичные файлы для PyTorch 1.7.0, просто запустите
$ pip install torch-scatter= = latest+${CUDA} - f https://pytorch-geometric.com/whl/torch-1.7.0.html $ pip install torch-sparse==latest+${CUDA} - f https://pytorch-geometric.com/whl/torch-1.7.0.html $ pip install torch-cluster= = latest+${CUDA} - f https://pytorch-geometric.com/whl/torch-1.7.0.html $ pip install torch-spline-conv==latest+${CUDA} - f https://pytorch-geometric.com/whl/torch-1.7.0.html $ pip install torch-геометрический
где ${CUDA}
следует заменить либо cpu
, cu92
, cu101
, cu102
, либо cu110
в зависимости от вашей установки PyTorch.
| cpu | cu92 | cu101 | cu102 | cu110 |
---|
Линукс | ? | ? | ? | ? | ? |
Windows | ? | ? | ? | ? | ? |
МАКО | ? |
|
|
|
|
PyTorch 1.6.0
Чтобы установить двоичные файлы для PyTorch 1.6.0, просто запустите
$ pip install torch-scatter= = latest+${CUDA} - f https://pytorch-geometric.com/whl/torch-1.6.0.html $ pip install torch-sparse==latest+${CUDA} - f https://pytorch-geometric.com/whl/torch-1.6.0.html $ pip install torch-cluster= = latest+${CUDA} - f https://pytorch-geometric.com/whl/torch-1.6.0.html $ pip install torch-spline-conv==latest+${CUDA} - f https://pytorch-geometric.com/whl/torch-1.6.0.html $ pip install torch-геометрический
где ${CUDA}
следует заменить либо cpu
, cu92
, cu101
, либо cu102
в зависимости от вашей установки PyTorch.
| cpu | cu92 | cu101 | cu102 |
---|
Линукс | ? | ? | ? | ? |
Windows | ? | ? | ? | ? |
МАКО | ? |
|
|
|
Примечание: двоичные файлы более старых версий также предоставляются для PyTorch 1.4.0 и PyTorch 1.5.0/1.5.1 (следуя той же процедуре).
От мастера
Если вы хотите поэкспериментировать с последними функциями PyG, которые еще не были выпущены, вы можете установить PyG из master via
pip install git+https://github.com/rusty1s/pytorch_geometric.git
Запуск примеров
cd examples python gcn.py
Цитировать
Пожалуйста, цитируйте нашу статью (и соответствующие статьи об используемых методах), Если вы используете этот код в своей собственной работе:
@inproceedings{Fey/Lenssen/2019, title={Fast Graph Representation Learning with {PyTorch Geometric}}, author={Fey, Matthias and Lenssen, Jan E.}, booktitle={ICLR Workshop on Representation Learning on Graphs and Manifolds}, year={2019}, }
Не стесняйтесь обращаться к нам по электронной почте, если вы хотите, чтобы ваша работа была указана во внешних ресурсах.
Ходовые испытания
$ python setup.py test
Источник: github.com
Комментарии: