Releases: pyg-team/pytorch_geometric
1.6.2
Features
GCN2Conv
[Cora example, PPI example]TransformerConv
- New Dataset:
WebKB
- New Google Colab: Explaining GNN Model Predictions using Captum (thanks to @m30m)
- Distributed training examples for node classification and graph classification (thanks to @maqy1995)
Node2Vec
can now handle differentp
andq
values other than1
(torch-cluster
update required)GraphSAGE
unsupervised training example (thanks to @yuanx749)- Linear
GAE
example (thanks to @GuillaumeSalha)
Minor improvements
- The
SIGN
example now operates on mini-batches of nodes - Improved data loading runtime of
InMemoryDataset
s NeighborSampler
does now work withSparseTensor
as inputToUndirected
transform in order to convert directed graphs to undirected onesGNNExplainer
does now allow for customizable edge and node feature loss reductionaggr
can now passed to any GNN based on theMessagePassing
interface (thanks to @m30m)- Runtime improvements in
SEAL
(thanks to @muhanzhang) - Runtime improvements in
torch_geometric.utils.softmax
(thanks to @Book1996) GAE.recon_loss
now supports custom negative edge indices (thanks to @reshinthadithyan)- Faster
spmm
computation andrandom_walk
sampling on CPU (torch-sparse
andtorch-cluster
updates required) DataParallel
does now support thefollow_batch
argument- Parallel approximate PPR computation in the
GDC
transform (thanks to @klicperajo) - Improved documentation by providing an autosummary of all subpackages (thanks to @m30m)
- Improved documentation on how edge weights are handled in various GNNs (thanks to @m30m)
Bugfixes
- Fixed a bug in
GATConv
when computing attention coefficients in bipartite graphs - Fixed a bug in
GraphSAINTSampler
that led to wrong edge feature sampling - Fixed the
DimeNet
pretraining link - Fixed a bug in processing
ego-twitter
andego-gplus
of theSNAPDataset
collection - Fixed a number of broken dataset URLs (
ICEWS18
,QM9
,QM7b
,MoleculeNet
,Entities
,PPI
,Reddit
,MNISTSuperpixels
,ShapeNet
) - Fixed a bug in which
MessagePassing.jittable()
tried to write to a file without permission (thanks to @twoertwein) GCNConv
does not requireedge_weight
in casenormalize=False
Batch.num_graphs
will now report the correct amount of graphs in case of zero-sized graphs
1.6.1
This is a minor release, mostly focusing on PyTorch 1.6.0 support. All external wheels are now also available for PyTorch 1.6.0.
New Features
WikiCS
dataset- DeepGCN via
GENConv
andDeepGCNLayer
(thanks to @lightaime) PairNorm
(thanks to @gupta-abhay)LayerNorm
(thanks to @aluo-x)
Bugfixes
- Fixed a bug which prevented
GNNExplainer
to work withGATConv
- Fixed the
MessagePassing.jittable
call when installing PyG viapip
- Fixed a bug in
torch-sparse
where reduce functions withdim=0
did not yield the correct result - Fixed a bug in
torch-sparse
which suppressed all warnings
1.6.0
A new major release, introducing TorchScript support, memory-efficient aggregations, bipartite GNN modules, static graphs and much more!
Major Features
- TorchScript support, see here for the accompanying tutorial (thanks to @lgray and @liaopeiyuan)
- Memory-efficient aggregations via
torch_sparse.SparseTensor
, see here for the accompanying tutorial - Most GNN modules can now operate on bipartite graphs (and some of them can also operate on different feature dimensionalities for source and target nodes), useful for neighbor sampling or heterogeneous graphs:
conv = SAGEConv(in_channels=(32, 64), out_channels=64)
out = conv((x_src, x_dst), edge_index)
- Static graph support:
conv = GCNConv(in_channels=32, out_channels=64)
x = torch.randn(batch_size, num_nodes, in_channels)
out = conv(x, edge_index)
print(out.size())
>>> torch.Size([batch_size, num_nodes, out_channels])
Additional Features
PNAConv
(thanks to @lukecavabarrett and @gcorso)- Pre-Trained
DimeNet
on QM9 - SEAL link prediction example (thanks to @muhanzhang)
ClusterGCNConv
- Cluster-GCN PPI example (thanks to @CFF-Dream)
WeightedEdgeSampler
for GraphSAINT (thanks to @KiddoZhu)- Better
num_workers
support forGraphSAINT
- The automatic addition of self-loops can now be disabled via the
add_self_loops
argument, e.g., for GCNConv
Breaking Changes
- Memory-efficient
RGCNConv
: The oldRGCNConv
implementation has been moved toFastRGCNConv
Complementary Frameworks
- DeepSNAP: A PyTorch library that bridges between graph libraries such as NetworkX and PyTorch Geometric
- PyTorch Geometric Temporal: A temporal GNN library built upon PyTorch Geometric
Datasets
GNNBenchmarkDataset
suite from the Benchmarking Graph Neural Networks paperWordNet18
Bugfixes
- Fixed a bug in the
VGAE
KL-loss computation (thanks to @GuillaumeSalha)
1.5.0
This release is a big one thanks to many wonderful contributors. You guys are awesome!
Breaking Changes and Highlights
NeighborSampler
got completely revamped: it's now much faster, allows for parallel sampling, and allows to easily apply skip-connections or self-loops. Seeexamples/reddit.py
or the newly introduced OGB examples (examples/ogbn_products_sage.py
andexamples/ogbn_products_gat.py
). The latter also sets a new SOTA on the OGB leaderboards (reaching 0.7945 ± 0.0059 test accuracy)SAGEConv
now usesconcat=True
by default, and there is no option to disable it anymoreNode2Vec
got enhanced by a parallel sampling mechanism, and as a result, its API slightly changedMetaPath2Vec
: The first model in PyG that is able to operate on heteregenous graphsGNNExplainer
: Generating explanations for graph neural networksGraphSAINT
: A graph sampling based inductive learning methodSchNet
model for learning on molecular graphs, comes with pre-trained weights for each target of theQM9
dataset (thanks to @Nyuten)
Additional Features
ASAPooling
: Adaptive structure aware pooling for learning hierarchical graph representations (thanks to @ekagra-ranjan)ARGVA
node clustering example, seeexamples/argva_node_clustering.py
(thanks to @gsoosk)MFConv
: Molecular fingerprint graph convolution operator (thanks to @rhsimplex)GIN-E-Conv
that extends theGINConv
to also account for edge featuresDimeNet
: Directional message passing for molecular graphsSIGN
: Scalable inception graph neural networksGravNetConv
(thanks to @jkiesele)
Datasets
Minor changes
GATConv
can now return attention weights via thereturn_attention_weights
argument (thanks to @douglasrizzo)InMemoryDataset
now has acopy
method that converts sliced datasets back into a contiguous memory layoutPlanetoid
got enhanced by the ability to let users choose between different splitting methods (thanks to @dongkwan-kim)k_hop_subgraph
: Computes thek
-hop subgraph around a subset of nodesgeodesic_distance
: Geodesic distances can now be computed in parallel (thanks to @jannessm)tree_decomposition
: The tree decompostion algorithm for generating junction trees from moleculesSortPool
benchmark script now uses 1-D convolutions after pooling, leading to better performance (thanks to @muhanzhang)
Bugfixes
- Fixed a bug in
write_off
- Fixed a bug in the processing of the
GEDDataset
dataset to_networkx
conversion can now also properly handle non-tensor attributes- Fixed a bug in
read_obj
(thanks to @mwussow)
1.4.3
Features
- Cluster-GCN via
ClusterData
andClusterLoader
for operating on large-scale graphs, seeexamples/cluster_gcn.py
for an example on how to use - Added a tutorial about advanced mini-batching scenarios
- Added a
tensorboard
logging example
Datasets
CitationFull
: The full citation network dataset suiteSNAPDataset
: A subset of graph datasets from the SNAP dataset collectionSuiteSparseMatrixCollection
TrackMLParticleTrackingDataset
Minor Changes
- Added the
concat
argument toSAGEConv
- Outsourced the
train_test_split_edges
method of the graph autoencoderGAE
class totorch_geometric.utils
Bugfixes
- Fixed
SplineConv
compatibility with latesttorch-spline-conv
package trimesh
conversion utilities do not longer result in a permutation of the input data
1.4.2
Minor Changes
- There are now Python wheels available for
torch-scatter
andtorch-sparse
which should make the installation procedure much more user-friendly. Simply run
pip install torch-scatter==latest+${CUDA} torch-sparse==latest+${CUDA} -f https://pytorch-geometric.com/whl/torch-1.4.0.html
pip install torch-geometric
where ${CUDA}
should be replaced by either cpu
, cu92
, cu100
or cu101
depending on your PyTorch installation.
torch-cluster
is now an optional dependency. All methods that rely ontorch-cluster
will result in an error requesting you to installtorch-cluster
.torch_geometric.data.Dataset
can now also be indexed and shuffled:
dataset.shuffle()[:50]
Bugfixes
- Fixed a bug that prevented the user from saving
MessagePassing
modules. - Fixed a bug in
RGCNConv
when usingroot_weight=False
.
1.4.1
This release mainly focuses on torch-scatter=2.0
support. As a result, PyTorch Geometric now requires PyTorch 1.4. If you are in the process of updating to PyTorch 1.4, please ensure that you also re-install all related external packages.
Features
- Graph Diffusion Convolution
- MinCUT Pooling
- CGCNNConv
TUDataset
cleaned versions, containing only non-isomorphic graphsGridSampling
transformShapeNet
dataset now comes with normals and better split options- TriMesh conversion utilities
ToSLIC
transform for superpixel generation from images- Re-writing of
MessagePassing
interface with customaggregate
methods (no API changes)
Bugfixes
- Fixed some failure modes of
from_networkx
.
1.3.2
This release focuses on Pytorch 1.2 support and removes all torch.bool
deprecation warnings. As a result, this release now requires PyTorch 1.2. If you are in the process of updating to PyTorch 1.2, please ensure that you also re-install all related external packages.
Overall, this release brings the following new features/bugfixes:
Features
- Prints out a warning in case the
pre_transform
andpre_filter
arguments differ from an already processed version
Bugfixes
- Removed all
torch.bool
deprecation warnings - Fixed
ARGA
initialization bug - Fixed a pre-processing bug in
QM9
1.3.1
This is a minor release which is mostly distributed for official PyTorch 1.2 support. In addition, it provides minor bugfixes and the following new features:
Modules
- Non-normalized
ChebConv
in combination with a largest eigenvalue transform TAGCN
- Graph U-Net
Node2Vec
EdgePooling
- Alternative
GMMConv
formulation with separate kernels - Alternative Top-K pooling formulation based on thresholds with examples on synthetic
COLORS
andTRIANGLES
datasets
Datasets
- Pascal VOC 2011 with Berkeley keypoint annotations (
PascalVOCKeypoints
) DBP15K
datasetWILLOWObjectClass
dataset
Please also update related external packages via, e.g.:
$ pip install --upgrade torch-cluster
1.3.0
- Support for giant graph handling using
NeighborSampler
and bipartite message passing operators - Debugging support using the new
debug
API - Fixed
TUDataset
download errors - Added
FeasStConv
module - Improved
networkx
conversion functionality - Improved
Data
andDataLoader
handling with customizablenumber_of_nodes
(e.g. for holding two graphs in a singleData
object) - Added
GeniePath
example - Added
SAGPool
module - Added geodesic distance computation using
gdist
(optional) - Improved
PointNet
andDGCNN
classification and segmentation examples - Added
subgraph
functionality - Fixed
GMMConv
- Added a bunch of new datasets
- Added fast implementations for random graph generation
- Improved
loop
API - Minor bugfixes
Thanks to all contributors!