All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
- Added the
ComplEx
KGE model (#6898) - Added option to write benchmark results to csv (#6888)
- Added
HeteroLayerNorm
andHeteroBatchNorm
layers (#6838) - Added the
HeterophilousGraphDataset
suite (#6846) - Added support for sparse tensor in full batch mode inference benchmark (#6843)
- Enabled
NeighborLoader
to return number of sampled nodes and edges per hop (#6834) - Added
ZipLoader
to execute multipleNodeLoader
orLinkLoader
instances (#6829) - Added common
utils.select
andutils.narrow
functionality to support filtering of both tensors and lists (#6162) - Support
normalization
customization inget_mesh_laplacian
(#6790) - Added the
TemporalEncoding
module (#6785) - Added CPU-optimized
spmm_reduce
functionality via CSR format (#6699, #6759) - Added support for the revised version of the
MD17
dataset (#6734) - Added TorchScript support to the
RECT_L
model (#6727) - Added TorchScript support to the
Node2Vec
model (#6726) - Added
utils.to_edge_index
to convert sparse tensors to edge indices and edge attributes (#6728) - Fixed expected data format in
PolBlogs
dataset (#6714) - Added
SimpleConv
to perform non-trainable propagation (#6718) - Added a
RemoveDuplicatedEdges
transform (#6709) - Added TorchScript support to the
LINKX
model (#6712) - Added
torch.jit
examples forexample/film.py
andexample/gcn.py
(#6602) - Added
Pad
transform (#5940, #6697, #6731, #6758) - Added full batch mode to the inference benchmark (#6631)
- Added
cat
aggregation type to theHeteroConv
class so that features can be concatenated during grouping (#6634) - Added
torch.compile
support and benchmark study (#6610) - Added the
AntiSymmetricConv
layer (#6577) - Added a mixin for Huggingface model hub integration (#5930, #6591)
- Added support for accelerated GNN layers in
nn.conv.cugraph
viacugraph-ops
(#6278, #6388, #6412) - Added accelerated
index_sort
function frompyg-lib
for faster sorting (#6554) - Fix incorrect device in
EquilibriumAggregration
(#6560) - Added bipartite graph support in
dense_to_sparse()
(#6546) - Add CPU affinity support for more data loaders (#6534)
- Added the
BAMultiShapesDataset
(#6541) - Added the interfaces of a graph pooling framework (#6540)
- Added automatic
n_id
ande_id
attributes to mini-batches produced byNodeLoader
andLinkLoader
(#6524) - Added
PGMExplainer
totorch_geometric.contrib
(#6149, #6588, #6589) - Added a
NumNeighbors
helper class for specifying the number of neighbors when sampling (#6501, #6505, #6690) - Added caching to
is_node_attr()
andis_edge_attr()
calls (#6492) - Added
ToHeteroLinear
andToHeteroMessagePassing
modules to accelerateto_hetero
functionality (#5992, #6456) - Added
GraphMaskExplainer
(#6284) - Added the
GRBCD
andPRBCD
adversarial attack models (#5972) - Added
dropout
option toSetTransformer
andGraphMultisetTransformer
(#6484) - Added option to customize loader arguments for evaluation in
LightningNodeData
andLightningLinkData
(#6450, #6456) - Added option to customize
num_neighbors
inNeighborSampler
after instantiation (#6446) - Added the
Taobao
dataset and a corresponding example for it (#6144) - Added
pyproject.toml
(#6431) - Added the
torch_geometric.contrib
sub-package (#6422) - Warn on using latest documentation (#6418)
- Added basic
pyright
type checker support (#6415) - Added a new external resource for link prediction (#6396)
- Added
CaptumExplainer
(#6383, #6387, #6433, #6487) - Added support for custom
HeteroData
mini-batch class in remote backends (#6377) - Added the
GNNFF
model (#5866) - Added
MLPAggregation
,SetTransformerAggregation
,GRUAggregation
, andDeepSetsAggregation
as adaptive readout functions (#6301, #6336, #6338) - Added
Dataset.to_datapipe
for converting PyG datasets into a torchdataDataPipe
(#6141) - Added
to_nested_tensor
andfrom_nested_tensor
functionality (#6329, #6330, #6331, #6332) - Added the
GPSConv
Graph Transformer layer and example (#6326, #6327) - Added
networkit
conversion utilities (#6321) - Added global dataset attribute access via
dataset.{attr_name}
(#6319) - Added the
TransE
KGE model and example (#6314) - Added the Freebase
FB15k_237
dataset (#3204) - Added
Data.update()
andHeteroData.update()
functionality (#6313) - Added
PGExplainer
(#6204) - Added the
AirfRANS
dataset (#6287) - Added
AttentionExplainer
(#6279) - Added (un)faithfulness explainability metric (#6090)
- Added fidelity explainability metric (#6116, #6510)
- Added subgraph visualization of GNN explanations (#6235, #6271)
- Added weighted negative sampling option in
LinkNeighborLoader
(#6264) - Added the
BA2MotifDataset
explainer dataset (#6257) - Added
CycleMotif
motif generator to generaten
-node cycle shaped motifs (#6256) - Added the
InfectionDataset
to evaluate explanations (#6222) - Added
characterization_score
andfidelity_curve_auc
explainer metrics (#6188) - Added
get_message_passing_embeddings
(#6201) - Added the
PointGNNConv
layer (#6194) - Added
GridGraph
graph generator to generate grid graphs (#6220 - Added explainability metrics for when ground truth is available (#6137)
- Added
visualize_feature_importance
to support node feature visualizations (#6094) - Added heterogeneous graph support to
Explanation
framework (#6091, #6218) - Added a
CustomMotif
motif generator (#6179) - Added
ERGraph
graph generator to generate Ergos-Renyi (ER) graphs (#6073) - Added
BAGraph
graph generator to generate Barabasi-Albert graphs - the usage ofdatasets.BAShapes
is now deprecated (#6072 - Added explainability benchmark dataset framework (#6104)
- Added
seed_time
attribute to temporalNodeLoader
outputs in caseinput_time
is given (#6196) - Added
Data.edge_subgraph
andHeteroData.edge_subgraph
functionalities (#6193) - Added
input_time
option toLightningNodeData
andtransform_sampler_output
toNodeLoader
andLinkLoader
(#6187) - Added
summary
for PyG/PyTorch models (#5859, #6161) - Started adding
torch.sparse
support to PyG (#5906, #5944, #6003, #6033, #6514, #6532, #6748, #6847, #6868, #6874) - Add
inputs_channels
back in training benchmark (#6154) - Added support for dropping nodes in
utils.to_dense_batch
in casemax_num_nodes
is smaller than the number of nodes (#6124) - Added the RandLA-Net architecture as an example (#5117)
- Changed the interface of
sort_edge_index
,coalesce
andto_undirected
to only return singleedge_index
information in case theedge_attr
argument is not specified (#6875, #6879, #6893) - Fixed a bug in
to_hetero
when using an uninitialized submodule without implementingreset_parameters
(#6863) - Fixed a bug in
get_mesh_laplacian
(#6790) - Fixed a bug in which masks were not properly masked in
GNNExplainer
on link prediction tasks (#6787) - Allow the usage of
ChebConv
withinGNNExplainer
(#6778) - Allow setting the
EdgeStorage.num_edges
property (#6710) - Fixed a bug in
utils.bipartite_subgraph()
and updated docs ofHeteroData.subgraph()
(#6654) - Properly reset the
data_list
cache of anInMemoryDataset
when accessingdataset.data
(#6685) - Fixed a bug in
Data.subgraph()
andHeteroData.subgraph()
(#6613) - Fixed a bug in
PNAConv
andDegreeScalerAggregation
to correctly incorporate degree statistics of isolated nodes (#6609) - Improved code coverage (#6523, #6538, #6555, #6558, #6568, #6573, #6578, #6597, #6600, #6618, #6619, #6621, #6623, #6637, #6638, #6640, #6645, #6648, #6647, #6653, #6657, #6662, #6664, #6667, #6668, #6669, #6670, #6671, #6673, #6675, #6676, #6677, #6678, #6681, #6683, #6703, #6720, #6735, #6736, #6763, #6781, #6797, #6799, #6824, #6858)
- Fixed a bug in which
data.to_heterogeneous()
filtered attributs in the wrong dimension (#6522) - Breaking Change: Temporal sampling will now also sample nodes with an equal timestamp to the seed time (requires
pyg-lib>0.1.0
) (#6517) - Changed
DataLoader
workers with affinity to start atcpu0
(#6512) - Allow 1D input to
global_*_pool
functions (#6504) - Add information about dynamic shapes in
RGCNConv
(#6482) - Fixed the use of types removed in
numpy 1.24.0
(#6495) - Fixed keyword parameters in
examples/mnist_voxel_grid.py
(#6478) - Unified
LightningNodeData
andLightningLinkData
code paths (#6473) - Allow indices with any integer type in
RGCNConv
(#6463) - Re-structured the documentation (#6420, #6423, #6429, #6440, #6443, #6445, #6452, #6453, #6458, #6459, #6460, #6490, #6491, #6693, #6744)
- Fix the default arguments of
DataParallel
class (#6376) - Fix
ImbalancedSampler
on slicedInMemoryDataset
(#6374) - Breaking Change: Changed the interface and implementation of
GraphMultisetTransformer
(#6343) - Fixed the approximate PPR variant in
transforms.GDC
to not crash on graphs with isolated nodes (#6242) - Added a warning when accesing
InMemoryDataset.data
(#6318) - Drop
SparseTensor
dependency inGraphStore
(#5517) - Replace
NeighborSampler
withNeighborLoader
in the distributed sampling example (#6204) - Fixed the filtering of node features in
transforms.RemoveIsolatedNodes
(#6308) - Fixed a bug in
DimeNet
that causes a output dimension mismatch (#6305) - Fixed
Data.to_heterogeneous()
with emptyedge_index
(#6304) - Unify
Explanation.node_mask
andExplanation.node_feat_mask
(#6267) - Moved thresholding config of the
Explainer
toExplanation
(#6215) - Fixed a bug in the output order in
HeteroLinear
for un-sorted type vectors (#6198) - Breaking Change: Move
ExplainerConfig
arguments to theExplainer
class (#6176) - Refactored
NeighborSampler
to be input-type agnostic (#6173) - Infer correct CUDA device ID in
profileit
decorator (#6164) - Correctly use edge weights in
GDC
example (#6159) - Breaking Change: Moved PyTorch Lightning data modules to
torch_geometric.data.lightning
(#6140) - Make
torch_sparse
an optional dependency (#6132, #6134, #6138, #6139) - Optimized
utils.softmax
implementation (#6113, #6155, #6805) - Optimized
topk
implementation for large enough graphs (#6123)
torch-sparse
is now an optional dependency (#6625, #6626, #6627, #6628, #6629, #6630)- Removed most of the
torch-scatter
dependencies (#6394, #6395, #6399, #6400, #6615, #6617) - Removed the deprecated classes
GNNExplainer
andExplainer
fromnn.models
(#6382) - Removed
target_index
argument in theExplainer
interface (#6270) - Removed
Aggregation.set_validate_args
option (#6175)
- Extended
GNNExplainer
to support edge level explanations (#6056, #6083) - Added CPU affinitization for
NodeLoader
(#6005) - Added triplet sampling in
LinkNeighborLoader
(#6004) - Added
FusedAggregation
of simple scatter reductions (#6036) - Added a
to_smiles
function (#6038) - Added option to make normalization coefficients trainable in
PNAConv
(#6039) - Added
semi_grad
option inVarAggregation
andStdAggregation
(#6042) - Allow for fused aggregations in
MultiAggregation
(#6036, #6040) - Added
HeteroData
support forto_captum_model
and addedto_captum_input
(#5934) - Added
HeteroData
support inRandomNodeLoader
(#6007) - Added bipartite
GraphSAGE
example (#5834) - Added
LRGBDataset
to include 5 datasets from the Long Range Graph Benchmark (#5935) - Added a warning for invalid node and edge type names in
HeteroData
(#5990) - Added PyTorch 1.13 support (#5975)
- Added
int32
support inNeighborLoader
(#5948) - Add
dgNN
support andFusedGATConv
implementation (#5140) - Added
lr_scheduler_solver
and customizedlr_scheduler
classes (#5942) - Add
to_fixed_size
graph transformer (#5939) - Add support for symbolic tracing of
SchNet
model (#5938) - Add support for customizable interaction graph in
SchNet
model (#5919) - Started adding
torch.sparse
support to PyG (#5906, #5944, #6003, #6633) - Added
HydroNet
water cluster dataset (#5537, #5902, #5903) - Added explainability support for heterogeneous GNNs (#5886)
- Added
SparseTensor
support toSuperGATConv
(#5888) - Added TorchScript support for
AttentiveFP
(#5868) - Added
num_steps
argument to training and inference benchmarks (#5898) - Added
torch.onnx.export
support (#5877, #5997) - Enable VTune ITT in inference and training benchmarks (#5830, #5878)
- Add training benchmark (#5774)
- Added a "Link Prediction on MovieLens" Colab notebook (#5823)
- Added custom
sampler
support inLightningDataModule
(#5820) - Added a
return_semantic_attention_weights
argumentHANConv
(#5787) - Added
disjoint
argument toNeighborLoader
andLinkNeighborLoader
(#5775) - Added support for
input_time
inNeighborLoader
(#5763) - Added
disjoint
mode for temporalLinkNeighborLoader
(#5717) - Added
HeteroData
support fortransforms.Constant
(#5700) - Added
np.memmap
support inNeighborLoader
(#5696) - Added
assortativity
that computes degree assortativity coefficient (#5587) - Added
SSGConv
layer (#5599) - Added
shuffle_node
,mask_feature
andadd_random_edge
augmentation methdos (#5548) - Added
dropout_path
augmentation that drops edges from a graph based on random walks (#5531) - Add support for filling labels with dummy values in
HeteroData.to_homogeneous()
(#5540) - Added
temporal_strategy
option toneighbor_sample
(#5576) - Added
torch_geometric.sampler
package to docs (#5563) - Added the
DGraphFin
dynamic graph dataset (#5504) - Added
dropout_edge
augmentation that randomly drops edges from a graph - the usage ofdropout_adj
is now deprecated (#5495) - Added
dropout_node
augmentation that randomly drops nodes from a graph (#5481) - Added
AddRandomMetaPaths
that adds edges based on random walks along a metapath (#5397) - Added
WLConvContinuous
for performing WL refinement with continuous attributes (#5316) - Added
print_summary
method for thetorch_geometric.data.Dataset
interface (#5438) - Added
sampler
support toLightningDataModule
(#5456, #5457) - Added official splits to
MalNetTiny
dataset (#5078) - Added
IndexToMask
andMaskToIndex
transforms (#5375, #5455) - Added
FeaturePropagation
transform (#5387) - Added
PositionalEncoding
(#5381) - Consolidated sampler routines behind
torch_geometric.sampler
, enabling ease of extensibility in the future (#5312, #5365, #5402, #5404), #5418) - Added
pyg-lib
neighbor sampling (#5384, #5388) - Added
pyg_lib.segment_matmul
integration withinHeteroLinear
(#5330, #5347)) - Enabled
bf16
support in benchmark scripts (#5293, #5341) - Added
Aggregation.set_validate_args
option to skip validation ofdim_size
(#5290) - Added
SparseTensor
support to inference and training benchmark suite (#5242, #5258, #5881) - Added experimental mode in inference benchmarks (#5254)
- Added node classification example instrumented with Weights and Biases (W&B) logging and W&B Sweeps (#5192)
- Added experimental mode for
utils.scatter
(#5232, #5241, #5386) - Added missing test labels in
HGBDataset
(#5233) - Added
BaseStorage.get()
functionality (#5240) - Added a test to confirm that
to_hetero
works withSparseTensor
(#5222) - Added
torch_geometric.explain
module with base functionality for explainability methods (#5804, #6054, #6089)
- Moved and adapted
GNNExplainer
fromtorch_geometric.nn
totorch_geometric.explain.algorithm
(#5967, #6065) - Optimized scatter implementations for CPU/GPU, both with and without backward computation (#6051, #6052)
- Support temperature value in
dense_mincut_pool
(#5908) - Fixed a bug in which
VirtualNode
mistakenly treated node features as edge features (#5819) - Fixed
setter
andgetter
handling inBaseStorage
(#5815) - Fixed
path
inhetero_conv_dblp.py
example (#5686) - Fix
auto_select_device
routine in GraphGym for PyTorch Lightning>=1.7 (#5677) - Support
in_channels
withtuple
inGENConv
for bipartite message passing (#5627, #5641) - Handle cases of not having enough possible negative edges in
RandomLinkSplit
(#5642) - Fix
RGCN+pyg-lib
forLongTensor
input (#5610) - Improved type hint support (#5842, #5603, #5659, #5664, #5665, #5666, #5667, #5668, #5669, #5673, #5675, #5673, #5678, #5682, #5683, #5684, #5685, #5687, #5688, #5695, #5699, #5701, #5702, #5703, #5706, #5707, #5710, #5714, #5715, #5716, #5722, #5724, #5725, #5726, #5729, #5730, #5731, #5732, #5733, #5743, #5734, #5735, #5736, #5737, #5738, #5747, #5752, #5753, #5754, #5756, #5757, #5758, #5760, #5766, #5767, #5768), #5781, #5778, #5797, #5798, #5799, #5800, #5806, #5810, #5811, #5828, #5847, #5851, #5852)
- Avoid modifying
mode_kwargs
inMultiAggregation
(#5601) - Changed
BatchNorm
to allow for batches of size one during training (#5530, #5614) - Integrated better temporal sampling support by requiring that local neighborhoods are sorted according to time (#5516, #5602)
- Fixed a bug when applying several scalers with
PNAConv
(#5514) - Allow
.
inParameterDict
key names (#5494) - Renamed
drop_unconnected_nodes
todrop_unconnected_node_types
anddrop_orig_edges
todrop_orig_edge_types
inAddMetapaths
(#5490) - Improved
utils.scatter
performance by explicitly choosing better implementation foradd
andmean
reduction (#5399) - Fix
to_dense_adj
with emptyedge_index
(#5476) - The
AttentionalAggregation
module can now be applied to compute attentin on a per-feature level (#5449) - Ensure equal lenghts of
num_neighbors
across edge types inNeighborLoader
(#5444) - Fixed a bug in
TUDataset
in which node features were wrongly constructed whenevernode_attributes
only hold a single feature (e.g., inPROTEINS
) (#5441) - Breaking change: removed
num_neighbors
as an attribute of loader (#5404) ASAPooling
is now jittable (#5395)- Updated unsupervised
GraphSAGE
example to leverageLinkNeighborLoader
(#5317) - Replace in-place operations with out-of-place ones to align with
torch.scatter_reduce
API (#5353) - Breaking bugfix:
PointTransformerConv
now correctly usessum
aggregation (#5332) - Improve out-of-bounds error message in
MessagePassing
(#5339) - Allow file names of a
Dataset
to be specified as either property and method (#5338) - Fixed separating a list of
SparseTensor
withinInMemoryDataset
(#5299) - Improved name resolving of normalization layers (#5277)
- Fail gracefully on
GLIBC
errors withintorch-spline-conv
(#5276) - Fixed
Dataset.num_classes
in case atransform
modifiesdata.y
(#5274) - Allow customization of the activation function within
PNAConv
(#5262) - Do not fill
InMemoryDataset
cache ondataset.num_features
(#5264) - Changed tests relying on
dblp
datasets to instead use synthetic data (#5250) - Fixed a bug for the initialization of activation function examples in
custom_graphgym
(#5243) - Allow any integer tensors when checking edge_index input to message passing (5281)
- Removed
scatter_reduce
option from experimental mode (#5399)
- Added the test for
DeepGCNLayer
(#5704) - Allow
.
inModuleDict
key names (#5227) - Added
edge_label_time
argument toLinkNeighborLoader
(#5137, #5173) - Let
ImbalancedSampler
accepttorch.Tensor
as input (#5138) - Added
flow
argument togcn_norm
to correctly normalize the adjacency matrix inGCNConv
(#5149) NeighborSampler
supports graphs without edges (#5072)- Added the
MeanSubtractionNorm
layer (#5068) - Added
pyg_lib.segment_matmul
integration withinRGCNConv
(#5052, #5096) - Support
SparseTensor
as edge label inLightGCN
(#5046) - Added support for
BasicGNN
models withinto_hetero
(#5091) - Added support for computing weighted metapaths in
AddMetapaths
(#5049) - Added inference benchmark suite (#4915)
- Added a dynamically sized batch sampler for filling a mini-batch with a variable number of samples up to a maximum size (#4972)
- Added fine grained options for setting
bias
anddropout
per layer in theMLP
model (#4981) - Added
EdgeCNN
model (#4991) - Added scalable
inference
mode inBasicGNN
with layer-wise neighbor loading (#4977) - Added inference benchmarks (#4892, #5107)
- Added PyTorch 1.12 support (#4975)
- Added
unbatch_edge_index
functionality for splitting anedge_index
tensor according to abatch
vector (#4903) - Added node-wise normalization mode in
LayerNorm
(#4944) - Added support for
normalization_resolver
(#4926, #4951, #4958, #4959) - Added notebook tutorial for
torch_geometric.nn.aggr
package to documentation (#4927) - Added support for
follow_batch
for lists or dictionaries of tensors (#4837) - Added
Data.validate()
andHeteroData.validate()
functionality (#4885) - Added
LinkNeighborLoader
support toLightningDataModule
(#4868) - Added
predict()
support to theLightningNodeData
module (#4884) - Added
time_attr
argument toLinkNeighborLoader
(#4877, #4908) - Added a
filter_per_worker
argument to data loaders to allow filtering of data within sub-processes (#4873) - Added a
NeighborLoader
benchmark script (#4815, #4862) - Added support for
FeatureStore
andGraphStore
inNeighborLoader
(#4817, #4851, #4854, #4856, #4857, #4882, #4883, #4929, #4992, #4962, #4968, #5037, #5088, #5270, #5307, #5318) - Added a
normalize
parameter todense_diff_pool
(#4847) - Added
size=None
explanation to jittableMessagePassing
modules in the documentation (#4850) - Added documentation to the
DataLoaderIterator
class (#4838) - Added
GraphStore
support toData
andHeteroData
(#4816) - Added
FeatureStore
support toData
andHeteroData
(#4807, #4853) - Added
FeatureStore
andGraphStore
abstractions (#4534, #4568, #5120) - Added support for dense aggregations in
global_*_pool
(#4827) - Added Python version requirement (#4825)
- Added TorchScript support to
JumpingKnowledge
module (#4805) - Added a
max_sample
argument toAddMetaPaths
in order to tackle very dense metapath edges (#4750) - Test
HANConv
with empty tensors (#4756, #4841) - Added the
bias
vector to theGCN
model definition in the "Create Message Passing Networks" tutorial (#4755) - Added
transforms.RootedSubgraph
interface with two implementations:RootedEgoNets
andRootedRWSubgraph
(#3926) - Added
ptr
vectors forfollow_batch
attributes withinBatch.from_data_list
(#4723) - Added
torch_geometric.nn.aggr
package (#4687, #4721, #4731, #4762, #4749, #4779, #4863, #4864, #4865, #4866, #4872, #4934, #4935, #4957, #4973, #4973, #4986, #4995, #5000, #5034, #5036, #5039, #4522, #5033, #5085, #5097, #5099, #5104, #5113, #5130, #5098, #5191) - Added the
DimeNet++
model (#4432, #4699, #4700, #4800) - Added an example of using PyG with PyTorch Ignite (#4487)
- Added
GroupAddRev
module with support for reducing training GPU memory (#4671, #4701, #4715, #4730) - Added benchmarks via
wandb
(#4656, #4672, #4676) - Added
unbatch
functionality (#4628) - Confirm that
to_hetero()
works with custom functions, e.g.,dropout_adj
(4653) - Added the
MLP.plain_last=False
option (4652) - Added a check in
HeteroConv
andto_hetero()
to ensure thatMessagePassing.add_self_loops
is disabled (4647) - Added
HeteroData.subgraph()
,HeteroData.node_type_subgraph()
andHeteroData.edge_type_subgraph()
support (#4635) - Added the
AQSOL
dataset (#4626) - Added
HeteroData.node_items()
andHeteroData.edge_items()
functionality (#4644) - Added PyTorch Lightning support in GraphGym (#4511, #4516 #4531, #4689, #4843)
- Added support for returning embeddings in
MLP
models (#4625) - Added faster initialization of
NeighborLoader
in case edge indices are already sorted (viais_sorted=True
) (#4620, #4702) - Added
AddPositionalEncoding
transform (#4521) - Added
HeteroData.is_undirected()
support (#4604) - Added the
Genius
andWiki
datasets tonn.datasets.LINKXDataset
(#4570, #4600) - Added
nn.aggr.EquilibrumAggregation
implicit global layer (#4522) - Added support for graph-level outputs in
to_hetero
(#4582) - Added
CHANGELOG.md
(#4581) - Added
HeteroData
support to theRemoveIsolatedNodes
transform (#4479) - Added
HeteroData.num_features
functionality (#4504) - Added support for projecting features before propagation in
SAGEConv
(#4437) - Added
Geom-GCN
splits to thePlanetoid
datasets (#4442) - Added a
LinkNeighborLoader
for training scalable link predictions models #4396, #4439, #4441, #4446, #4508, #4509) - Added an unsupervised
GraphSAGE
example onPPI
(#4416) - Added support for
LSTM
aggregation inSAGEConv
(#4379) - Added support for floating-point labels in
RandomLinkSplit
(#4311, #4383) - Added support for
torch.data
DataPipes
(#4302, #4345, #4349) - Added support for the
cosine
argument in theKNNGraph
/RadiusGraph
transforms (#4344) - Added support graph-level attributes in
networkx
conversion (#4343) - Added support for renaming node types via
HeteroData.rename
(#4329) - Added an example to load a trained PyG model in C++ (#4307)
- Added a
MessagePassing.explain_message
method to customize making explanations on messages (#4278, #4448)) - Added support for
GATv2Conv
in thenn.models.GAT
model (#4357) - Added
HeteroData.subgraph
functionality (#4243) - Added the
MaskLabel
module and a corresponding masked label propagation example (#4197) - Added temporal sampling support to
NeighborLoader
(#4025) - Added an example for unsupervised heterogeneous graph learning based on "Deep Multiplex Graph Infomax" (#3189)
- Changed docstring for
RandomLinkSplit
(#5190) - Switched to PyTorch
scatter_reduce
implementation - experimental feature (#5120) - Fixed
RGATConv
device mismatches forf-scaled
mode (#5187] - Allow for multi-dimensional
edge_labels
inLinkNeighborLoader
(#5186] - Fixed
GINEConv
bug with non-sequential input (#5154] - Improved error message (#5095)
- Fixed
HGTLoader
bug which produced outputs with missing edge types (#5067) - Fixed dynamic inheritance issue in data batching (#5051)
- Fixed
load_state_dict
inLinear
withstrict=False
mode (5094) - Fixed typo in
MaskLabel.ratio_mask
(5093) - Fixed
data.num_node_features
computation for sparse matrices (5089) - Fixed
torch.fx
bug withtorch.nn.aggr
package (#5021)) - Fixed
GenConv
test (4993) - Fixed packaging tests for Python 3.10 (4982)
- Changed
act_dict
(part ofgraphgym
) to create individual instances instead of reusing the same ones everywhere (4978) - Fixed issue where one-hot tensors were passed to
F.one_hot
(4970) - Fixed
bool
arugments inargparse
inbenchmark/
(#4967) - Fixed
BasicGNN
fornum_layers=1
, which now respects a desired number ofout_channels
(#4943) len(batch)
will now return the number of graphs inside the batch, not the number of attributes (#4931)- Fixed
data.subgraph
generation for 0-dim tensors (#4932) - Removed unnecssary inclusion of self-loops when sampling negative edges (#4880)
- Fixed
InMemoryDataset
inferring wronglen
for lists of tensors (#4837) - Fixed
Batch.separate
when using it for lists of tensors (#4837) - Correct docstring for SAGEConv (#4852)
- Fixed a bug in
TUDataset
wherepre_filter
was not applied wheneverpre_transform
was present - Renamed
RandomTranslate
toRandomJitter
- the usage ofRandomTranslate
is now deprecated (#4828) - Do not allow accessing edge types in
HeteroData
with two node types when there exists multiple relations between these types (#4782) - Allow
edge_type == rev_edge_type
argument inRandomLinkSplit
(#4757, #5221) - Fixed a numerical instability in the
GeneralConv
andneighbor_sample
tests (#4754) - Fixed a bug in
HANConv
in which destination node features rather than source node features were propagated (#4753) - Fixed versions of
checkout
andsetup-python
in CI (#4751) - Fixed
protobuf
version (#4719) - Fixed the ranking protocol bug in the RGCN link prediction example (#4688)
- Math support in Markdown (#4683)
- Allow for
setter
properties inData
(#4682, #4686) - Allow for optional
edge_weight
inGCN2Conv
(#4670) - Fixed the interplay between
TUDataset
andpre_transform
that modify node features (#4669) - Make use of the
pyg_sphinx_theme
documentation template (#4664, #4667) - Refactored reading molecular positions from sdf file for qm9 datasets (4654)
- Fixed
MLP.jittable()
bug in casereturn_emb=True
(#4645, #4648) - The generated node features of
StochasticBlockModelDataset
are now ordered with respect to their labels (#4617) - Fixed typos in the documentation (#4616, #4824, #4895, #5161)
- The
bias
argument inTAGConv
is now actually applied (#4597) - Fixed subclass behavior of
process
anddownload
inDatsaet
(#4586) - Fixed filtering of attributes for loaders in case
__cat_dim__ != 0
(#4629) - Fixed
SparseTensor
support inNeighborLoader
(#4320) - Fixed average degree handling in
PNAConv
(#4312) - Fixed a bug in
from_networkx
in case some attributes are PyTorch tensors (#4486) - Added a missing clamp in
DimeNet
(#4506, #4562) - Fixed the download link in
DBP15K
(#4428) - Fixed an autograd bug in
DimeNet
when resetting parameters (#4424) - Fixed bipartite message passing in case
flow="target_to_source"
(#4418) - Fixed a bug in which
num_nodes
was not properly updated in theFixedPoints
transform (#4394) - PyTorch Lightning >= 1.6 support (#4377)
- Fixed a bug in which
GATConv
was not jittable (#4347) - Fixed a bug in which the GraphGym config was not stored in each specific experiment directory (#4338)
- Fixed a bug in which
nn.models.GAT
did not produceout_channels
-many output channels (#4299) - Fixed mini-batching with empty lists as attributes (#4293)
- Fixed a bug in which
GCNConv
could not be combined withto_hetero
on heterogeneous graphs with one node type (#4279)
- Remove internal metrics in favor of
torchmetrics
(#4287)