Releases: pyg-team/pytorch_geometric
1.6.3
- Fixed a crucial bug in which
InMemoryDatasets with the usage ofpre_transformled to an error - New datasets:
WikipediaNetworkandActor - Added homophily ratio utility function:
torch_geometric.utils.homophily_ratio
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)
Node2Veccan now handle differentpandqvalues other than1(torch-clusterupdate required)GraphSAGEunsupervised training example (thanks to @yuanx749)- Linear
GAEexample (thanks to @GuillaumeSalha)
Minor improvements
- The
SIGNexample now operates on mini-batches of nodes - Improved data loading runtime of
InMemoryDatasets NeighborSamplerdoes now work withSparseTensoras inputToUndirectedtransform in order to convert directed graphs to undirected onesGNNExplainerdoes now allow for customizable edge and node feature loss reductionaggrcan now passed to any GNN based on theMessagePassinginterface (thanks to @m30m)- Runtime improvements in
SEAL(thanks to @muhanzhang) - Runtime improvements in
torch_geometric.utils.softmax(thanks to @Book1996) GAE.recon_lossnow supports custom negative edge indices (thanks to @reshinthadithyan)- Faster
spmmcomputation andrandom_walksampling on CPU (torch-sparseandtorch-clusterupdates required) DataParalleldoes now support thefollow_batchargument- Parallel approximate PPR computation in the
GDCtransform (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
GATConvwhen computing attention coefficients in bipartite graphs - Fixed a bug in
GraphSAINTSamplerthat led to wrong edge feature sampling - Fixed the
DimeNetpretraining link - Fixed a bug in processing
ego-twitterandego-gplusof theSNAPDatasetcollection - 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) GCNConvdoes not requireedge_weightin casenormalize=FalseBatch.num_graphswill 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
WikiCSdataset- DeepGCN via
GENConvandDeepGCNLayer(thanks to @lightaime) PairNorm(thanks to @gupta-abhay)LayerNorm(thanks to @aluo-x)
Bugfixes
- Fixed a bug which prevented
GNNExplainerto work withGATConv - Fixed the
MessagePassing.jittablecall when installing PyG viapip - Fixed a bug in
torch-sparsewhere reduce functions withdim=0did not yield the correct result - Fixed a bug in
torch-sparsewhich 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
DimeNeton QM9 - SEAL link prediction example (thanks to @muhanzhang)
ClusterGCNConv- Cluster-GCN PPI example (thanks to @CFF-Dream)
WeightedEdgeSamplerfor GraphSAINT (thanks to @KiddoZhu)- Better
num_workerssupport forGraphSAINT - The automatic addition of self-loops can now be disabled via the
add_self_loopsargument, e.g., for GCNConv
Breaking Changes
- Memory-efficient
RGCNConv: The oldRGCNConvimplementation 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
GNNBenchmarkDatasetsuite from the Benchmarking Graph Neural Networks paperWordNet18
Bugfixes
- Fixed a bug in the
VGAEKL-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
NeighborSamplergot completely revamped: it's now much faster, allows for parallel sampling, and allows to easily apply skip-connections or self-loops. Seeexamples/reddit.pyor the newly introduced OGB examples (examples/ogbn_products_sage.pyandexamples/ogbn_products_gat.py). The latter also sets a new SOTA on the OGB leaderboards (reaching 0.7945 ± 0.0059 test accuracy)SAGEConvnow usesconcat=Trueby default, and there is no option to disable it anymoreNode2Vecgot 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 methodSchNetmodel for learning on molecular graphs, comes with pre-trained weights for each target of theQM9dataset (thanks to @Nyuten)
Additional Features
ASAPooling: Adaptive structure aware pooling for learning hierarchical graph representations (thanks to @ekagra-ranjan)ARGVAnode clustering example, seeexamples/argva_node_clustering.py(thanks to @gsoosk)MFConv: Molecular fingerprint graph convolution operator (thanks to @rhsimplex)GIN-E-Convthat extends theGINConvto also account for edge featuresDimeNet: Directional message passing for molecular graphsSIGN: Scalable inception graph neural networksGravNetConv(thanks to @jkiesele)
Datasets
Minor changes
GATConvcan now return attention weights via thereturn_attention_weightsargument (thanks to @douglasrizzo)InMemoryDatasetnow has acopymethod that converts sliced datasets back into a contiguous memory layoutPlanetoidgot 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 moleculesSortPoolbenchmark 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
GEDDatasetdataset to_networkxconversion can now also properly handle non-tensor attributes- Fixed a bug in
read_obj(thanks to @mwussow)
1.4.3
Features
- Cluster-GCN via
ClusterDataandClusterLoaderfor operating on large-scale graphs, seeexamples/cluster_gcn.pyfor an example on how to use - Added a tutorial about advanced mini-batching scenarios
- Added a
tensorboardlogging example
Datasets
CitationFull: The full citation network dataset suiteSNAPDataset: A subset of graph datasets from the SNAP dataset collectionSuiteSparseMatrixCollectionTrackMLParticleTrackingDataset
Minor Changes
- Added the
concatargument toSAGEConv - Outsourced the
train_test_split_edgesmethod of the graph autoencoderGAEclass totorch_geometric.utils
Bugfixes
- Fixed
SplineConvcompatibility with latesttorch-spline-convpackage trimeshconversion 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-scatterandtorch-sparsewhich 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-clusteris now an optional dependency. All methods that rely ontorch-clusterwill result in an error requesting you to installtorch-cluster.torch_geometric.data.Datasetcan now also be indexed and shuffled:
dataset.shuffle()[:50]Bugfixes
- Fixed a bug that prevented the user from saving
MessagePassingmodules. - Fixed a bug in
RGCNConvwhen 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
TUDatasetcleaned versions, containing only non-isomorphic graphsGridSamplingtransformShapeNetdataset now comes with normals and better split options- TriMesh conversion utilities
ToSLICtransform for superpixel generation from images- Re-writing of
MessagePassinginterface with customaggregatemethods (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_transformandpre_filterarguments differ from an already processed version
Bugfixes
- Removed all
torch.booldeprecation warnings - Fixed
ARGAinitialization 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
ChebConvin combination with a largest eigenvalue transform TAGCN- Graph U-Net
Node2VecEdgePooling- Alternative
GMMConvformulation with separate kernels - Alternative Top-K pooling formulation based on thresholds with examples on synthetic
COLORSandTRIANGLESdatasets
Datasets
- Pascal VOC 2011 with Berkeley keypoint annotations (
PascalVOCKeypoints) DBP15KdatasetWILLOWObjectClassdataset
Please also update related external packages via, e.g.:
$ pip install --upgrade torch-cluster