Documentation  External Resources  Datasets
PyTorch Geometric Temporal is a temporal (dynamic) extension library for PyTorch Geometric.
The library consists of various dynamic and temporal geometric deep learning, embedding, and spatiotemporal regression methods from a variety of published research papers. In addition, it consists of an easytouse dataset loader and iterator for dynamic and temporal graphs, gpusupport. It also comes with a number of benchmark datasets with temporal and dynamic graphs (you can also create your own datasets).
Citing
If you find PyTorch Geometric Temporal and the new datasets useful in your research, please consider adding the following citation:
@misc{pytorch_geometric_temporal,
author = {Benedek, Rozemberczki and Paul, Scherer},
title = {{PyTorch Geometric Temporal}},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/benedekrozemberczki/pytorch_geometric_temporal}},
}
A simple example
PyTorch Geometric Temporal makes implementing Dynamic and Temporal Graph Neural Networks quite easy  see the accompanying tutorial. For example, this is all it takes to implement a recurrent graph convolutional network with two consecutive graph convolutional GRU cells and a linear layer:
import torch
import torch.nn.functional as F
from torch_geometric_temporal.nn.recurrent import GConvGRU
class RecurrentGCN(torch.nn.Module):
def __init__(self, node_features, num_classes):
super(RecurrentGCN, self).__init__()
self.recurrent_1 = GConvGRU(node_features, 32, 5)
self.recurrent_2 = GConvGRU(32, 16, 5)
self.linear = torch.nn.Linear(16, num_classes)
def forward(self, x, edge_index, edge_weight):
x = self.recurrent_1(x, edge_index, edge_weight)
x = F.relu(x)
x = F.dropout(x, training=self.training)
x = self.recurrent_2(x, edge_index, edge_weight)
x = F.relu(x)
x = F.dropout(x, training=self.training)
x = self.linear(x)
return F.log_softmax(x, dim=1)
Methods Included
In detail, the following temporal graph neural networks were implemented.
Discrete Recurrent Graph Convolutions

DCRNN from Li et al.: Diffusion Convolutional Recurrent Neural Network: DataDriven Traffic Forecasting (ICLR 2018)

GConvGRU from Seo et al.: Structured Sequence Modeling with Graph Convolutional Recurrent Networks (ICONIP 2018)

GConvLSTM from Seo et al.: Structured Sequence Modeling with Graph Convolutional Recurrent Networks (ICONIP 2018)

GCLSTM from Chen et al.: GCLSTM: Graph Convolution Embedded LSTM for Dynamic Link Prediction (CoRR 2018)

LRGCN from Li et al.: Predicting Path Failure In TimeEvolving Graphs (KDD 2019)

DyGrEncoder from Taheri et al.: Learning to Represent the Evolution of Dynamic Graphs with Recurrent Models (WWW 2019)

EvolveGCNH from Pareja et al.: EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs (AAAI 2020)

EvolveGCNO from Pareja et al.: EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs (AAAI 2020)
Temporal Graph Convolutions
 STGCN from Yu et al.: SpatioTemporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting (IJCAI 2018)
Auxiliary Graph Convolutions

TemporalConv from Yu et al.: SpatioTemporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting (IJCAI 2018)

DConv from Li et al.: Diffusion Convolutional Recurrent Neural Network: DataDriven Traffic Forecasting (ICLR 2018)
Head over to our documentation to find out more about installation, creation of datasets and a full list of implemented methods and available datasets. For a quick start, check out the examples in the examples/
directory.
If you notice anything unexpected, please open an issue. If you are missing a specific method, feel free to open a feature request.
Installation
PyTorch 1.7.0
To install the binaries for PyTorch 1.7.0, simply run
$ pip install torchscatter==latest+${CUDA} f https://pytorchgeometric.com/whl/torch1.7.0.html
$ pip install torchsparse==latest+${CUDA} f https://pytorchgeometric.com/whl/torch1.7.0.html
$ pip install torchcluster==latest+${CUDA} f https://pytorchgeometric.com/whl/torch1.7.0.html
$ pip install torchsplineconv==latest+${CUDA} f https://pytorchgeometric.com/whl/torch1.7.0.html
$ pip install torchgeometric
$ pip install torchgeometrictemporal
where ${CUDA}
should be replaced by either cpu
, cu92
, cu101
, cu102
or cu110
depending on your PyTorch installation.
cpu 
cu92 
cu101 
cu102 
cu110 


Linux 





Windows 





macOS 

PyTorch 1.6.0
To install the binaries for PyTorch 1.6.0, simply run
$ pip install torchscatter==latest+${CUDA} f https://pytorchgeometric.com/whl/torch1.6.0.html
$ pip install torchsparse==latest+${CUDA} f https://pytorchgeometric.com/whl/torch1.6.0.html
$ pip install torchcluster==latest+${CUDA} f https://pytorchgeometric.com/whl/torch1.6.0.html
$ pip install torchsplineconv==latest+${CUDA} f https://pytorchgeometric.com/whl/torch1.6.0.html
$ pip install torchgeometric
$ pip install torchgeometrictemporal
where ${CUDA}
should be replaced by either cpu
, cu92
, cu101
or cu102
depending on your PyTorch installation.
cpu 
cu92 
cu101 
cu102 


Linux 




Windows 




macOS 

Running tests
$ python setup.py test
Running examples
$ cd examples
$ python gconvgru_example.py
License