Skip to content

Latest commit

 

History

History
833 lines (777 loc) · 122 KB

CHANGELOG.md

File metadata and controls

833 lines (777 loc) · 122 KB

Changelog

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.

[2.7.0] - 2024-MM-DD

Added

Changed

Deprecated

Fixed

  • Fixed WebQSDataset.process raising exceptions (#9665)

Removed

[2.6.0] - 2024-09-13

Added

  • Added the WebQSPDataset dataset (#9481)
  • Added the GRetriever model and an example (#9480, #9167)
  • Added the ClusterPooling layer (#9627)
  • Added the LinkPredMRR metric (#9632)
  • Added PyTorch 2.4 support (#9594)
  • Added utils.normalize_edge_index for symmetric/asymmetric normalization of graph edges (#9554)
  • Added the RemoveSelfLoops transformation (#9562)
  • Added ONNX export for scatter with min/max reductions (#9587)
  • Added a residual option in GATConv and GATv2Conv (#9515)
  • Added the PatchTransformerAggregation layer (#9487)
  • Added the nn.nlp.LLM model (#9462)
  • Added an example of training GNNs for a graph-level regression task (#9070)
  • Added utils.from_rdmol/utils.to_rdmol functionality (#9452)
  • Added the OPFDataset (#9379)
  • Added the heterogeneous HeteroJumpingKnowledge module (#9380)
  • Started work on GNN+LLM package (#9350)
  • Added support for negative sampling in LinkLoader acccording to source and destination node weights (#9316)
  • Added support for EdgeIndex.unbind (#9298)
  • Integrate torch_geometric.Index into torch_geometric.EdgeIndex (#9296)
  • Support EdgeIndex.sparse_narrow for non-sorted edge indices (#9291)
  • Added torch_geometric.Index (#9276, #9277, #9278, #9279, #9280, #9281, #9284, #9285, #9286, #9287, #9288, #9289, #9297)
  • Added support for PyTorch 2.3 (#9240)
  • Added support for EdgeIndex in message_and_aggregate (#9131)
  • Added CornellTemporalHyperGraphDataset (#9090)
  • Added support for cuGraph data loading and GAT in single node Papers100m examples (#8173)
  • Added the VariancePreservingAggregation (VPA) (#9075)
  • Added option to pass custom from_smiles functionality to PCQM4Mv2 and MoleculeNet (#9073)
  • Added group_cat functionality (#9029)
  • Added support for EdgeIndex in spmm (#9026)
  • Added option to pre-allocate memory in GPU-based ApproxKNN (#9046)
  • Added support for EdgeIndex in MessagePassing (#9007)
  • Added support for torch.compile in combination with EdgeIndex (#9007)
  • Added a ogbn-mag240m example (#8249)
  • Added EdgeIndex.sparse_resize_ functionality (#8983)
  • Added approximate faiss-based KNN-search (#8952)
  • Added documentation on environment setup on XPU device (#9407)

Changed

  • Use torch.load(weights_only=True) by default (#9618)
  • Adapt cugraph examples to its new API (#9541)
  • Allow optional but untyped tensors in MessagePassing (#9494)
  • Added support for modifying filename of the stored partitioned file in ClusterLoader (#9448)
  • Support other than two-dimensional inputs in AttentionalAggregation (#9433)
  • Improved model performance of the examples/ogbn_papers_100m.py script (#9386, #9445)
  • Added the fmt arg to Dataset.get_summary (#9408)
  • Skipped zero atom molecules in MoleculeNet (#9318)
  • Ensure proper parallelism in OnDiskDataset for multi-threaded get calls (#9140)
  • Allow None outputs in FeatureStore.get_tensor() - KeyError should now be raised based on the implementation in FeatureStore._get_tensor() (#9102)
  • Allow mini-batching of uncoalesced sparse matrices (#9099)
  • Improvements to multi-node ogbn-papers100m default hyperparameters and adding evaluation on all ranks (#8823)
  • Changed distributed sampler and loader tests to correctly report failures in subprocesses to pytest (#8978)
  • Remove filtering of node/edge types in trim_to_layer functionality (#9021)
  • Default to scatter operations in MessagePassing in case torch.use_deterministic_algorithms is not set (#9009)
  • Made MessagePassing interface thread-safe (#9001)
  • Breaking Change: Added support for EdgeIndex in cugraph GNN layers (#8938)
  • Added the dim arg to torch.cross calls (#8918)
  • Added XPU support to basic GNN examples (#9421, #9439)

Deprecated

Fixed

  • Fixed VirtualNode transform for empty edge indices (#9605)
  • Fixed an issue where import order in the multi-GPU cugraph example could cause an rmm error (#9577)
  • Made the output of the single-GPU cugraph example more readable (#9577)
  • Fixed load_state_dict behavior with lazy parameters in HeteroDictLinear (#9493)
  • Sequential can now be properly pickled (#9369)
  • Fixed pickle.load for jittable MessagePassing modules (#9368)
  • Fixed batching of sparse tensors saved via data.edge_index (#9317)
  • Fixed arbitrary keyword ordering in MessagePassing.propgate (#9245)
  • Fixed node mapping bug in RCDD dataset (#9234)
  • Fixed incorrect treatment of edge_label and edge_label_index in ToSparseTensor transform (#9199)
  • Fixed EgoData processing in SnapDataset in case filenames are unsorted (#9195)
  • Fixed empty graph and isolated node handling in to_dgl (#9188)
  • Fixed bug in to_scipy_sparse_matrix when cuda is set as default torch device (#9146)
  • Fixed MetaPath2Vec in case the last node is isolated (#9145)
  • Ensure backward compatibility in MessagePassing via torch.load (#9105)
  • Prevent model compilation on custom propagate functions (#9079)
  • Ignore self.propagate appearances in comments when parsing MessagePassing implementation (#9044)
  • Fixed OSError on read-only file systems within MessagePassing (#9032)
  • Fixed metaclass conflict in Dataset (#8999)
  • Fixed import errors on MessagePassing modules with nested inheritance (#8973)
  • Fixed bug in multi XPU training (#9456)
  • Fixed TorchScript compilation error for MessagePassing._check_input on older torch versions (#9564)

Removed

[2.5.0] - 2024-02-16

Added

  • Added an example for recommender systems, including k-NN search and retrieval metrics (#8546)
  • Added multi-GPU evaluation in distributed sampling example (#8880)
  • Added end-to-end example for distributed CPU training (#8713)
  • Added PyTorch 2.2 support (#8857)
  • Added fallback code path for segment in case torch-scatter is not installed (#8852)
  • Added support for custom node labels in visualize_graph() (#8816)
  • Added support for graph partitioning for temporal data in torch_geometric.distributed (#8718, #8815, #8874)
  • Added TreeGraph and GridMotif generators (#8736)
  • Added two examples for edge-level temporal sampling on a heterogenous graph, with and without distributed training (#8383, #8820)
  • Added the num_graphs option to the StochasticBlockModelDataset (#8648)
  • Added noise scheduler utility for diffusion based graph generative models (#8347)
  • Added the equivariant ViSNet model (#8287)
  • Added temporal-related capabilities to Data (#8454)
  • Added support for returning multi graphs in to_networkx (#8575)
  • Added support for XPU device in profileit decorator (#8532)
  • Added KNNIndex exclusion logic (#8573)
  • Added warning when calling dataset.num_classes on regression problems (#8550)
  • Added relabel node functionality to dropout_node (#8524)
  • Added support for type checking via mypy (#8254)
  • Added support for link-prediction retrieval metrics (#8499, #8326, #8566, #8647)
  • Added METIS partitioning with CSC/CSR format selection in ClusterData (#8438)
  • Added is_torch_instance to check against the original class of compiled models (#8461)
  • Added dense computation for AddRandomWalkPE (#8431)
  • Added a tutorial for point cloud processing (#8015)
  • Added fsspec as file system backend (#8379, #8426, #8434, #8474)
  • Added support for floating-point average degree numbers in FakeDataset and FakeHeteroDataset (#8404)
  • Added support for device conversions of InMemoryDataset (#8402)
  • Added support for edge-level temporal sampling in NeighborLoader and LinkNeighborLoader (#8372, #8428)
  • Added support for torch.compile in ModuleDict and ParameterDict (#8363)
  • Added force_reload option to Dataset and InMemoryDataset to reload datasets (#8352, #8357, #8436)
  • Added support for torch.compile in MultiAggregation (#8345)
  • Added support for torch.compile in HeteroConv (#8344)
  • Added support for weighted sparse_cross_entropy (#8340)
  • Added a multi GPU training benchmarks for CUDA and XPU devices (#8288, #8382, #8386)
  • Support MRR computation in KGEModel.test() (#8298)
  • Added an example for model parallelism (examples/multi_gpu/model_parallel.py) (#8309)
  • Added a tutorial for multi-node multi-GPU training with pure PyTorch (#8071)
  • Added a multinode-multigpu example on ogbn-papers100M (#8070)
  • Added support for to_hetero_with_bases on static graphs (#8247)
  • Added the RCDD dataset (#8196)
  • Added distributed GAT + ogbn-products example targeting XPU device (#8032)
  • Added the option to skip explanations of certain message passing layers via conv.explain = False (#8216)

Changed

  • Changed the default inference mode for use_segment_matmul based on benchmarking (from a heuristic-based version) (#8615)
  • Return an empty tensor from utils.group_argsort if its input tensor is empty (#8752)
  • GNN layers are now jittable by default (#8745)
  • Sparse node features in NELL and AttributedGraphDataset are now represented as torch.sparse_csr_tensor instead of torch_sparse.SparseTensor (#8679)
  • Accelerated mini-batching of torch.sparse tensors (#8670)
  • Fixed RPC timeout due to worker closing in DistLoader with atexit not executed correctly in worker_init_fn (#8605)
  • ExplainerDataset will now contain node labels for any motif generator (#8519)
  • Made utils.softmax faster via softmax_csr (#8399)
  • Made utils.mask.mask_select faster (#8369)
  • Update DistNeighborSampler (#8209, #8367, #8375, (#8624, #8722)
  • Update GraphStore and FeatureStore to support distributed training (#8083)
  • Disallow the usage of add_self_loops=True in GCNConv(normalize=False) (#8210)
  • Disable device asserts during torch_geometric.compile (#8220)

Deprecated

  • Deprecated MessagePassing.jittable (#8781)
  • Deprecated the usage of torch_geometric.compile; Use torch.compile instead (#8780)
  • Deprecated the typing argument in MessagePassing.jittable() (#8731)
  • Deprecated torch_geometric.data.makedirs in favor of os.makedirs (#8421)
  • Deprecated DataParallel in favor of DistributedDataParallel (#8250)

Fixed

  • Fixed dummy value creation of boolean tensors in to_homogeneous() (#8858)
  • Fixed Google Drive download issues (#8804)
  • Fixed a bug in which InMemoryDataset did not reconstruct the correct data class when a pre_transform has modified it (#8692)
  • Fixed a bug in which transforms were not applied for OnDiskDataset (#8663)
  • Fixed mini-batch computation in DMoNPooing loss function (#8285)
  • Fixed NaN handling in SQLDatabase (#8479)
  • Fixed CaptumExplainer in case no index is passed (#8440)
  • Fixed edge_index construction in the UPFD dataset (#8413)
  • Fixed TorchScript support in AttentionalAggregation and DeepSetsAggregation (#8406)
  • Fixed GraphMaskExplainer for GNNs with more than two layers (#8401)
  • Breaking Change: Properly initialize modules in GATConv depending on whether the input is bipartite or non-bipartite (#8397)
  • Fixed input_id computation in NeighborLoader in case a mask is given (#8312)
  • Respect current device when deep-copying Linear layers (#8311)
  • Fixed Data.subgraph()/HeteroData.subgraph() in case edge_index is not defined (#8277)
  • Fixed empty edge handling in MetaPath2Vec (#8248)
  • Fixed AttentionExplainer usage within AttentiveFP (#8244)
  • Fixed load_from_state_dict in lazy Linear modules (#8242)
  • Fixed pre-trained DimeNet++ performance on QM9 (#8239)
  • Fixed GNNExplainer usage within AttentiveFP (#8216)
  • Fixed to_networkx(to_undirected=True) in case the input graph is not undirected (#8204)
  • Fixed sparse-sparse matrix multiplication support on Windows in TwoHop and AddRandomWalkPE transformations (#8197, #8225)
  • Fixed batching of HeteroData converted using ToSparseTensor() when torch_sparse is not installed (#8356)

Removed

  • Removed disabling of extension packages during torch_geometric.compile (#8698)

[2.4.0] - 2023-10-12

Added

  • Add the ogc method as example (#8168)
  • Added a tutorial on NeighborLoader (#7931)
  • Added the option to override usage of segment_matmul/grouped_matmul via the torch_geometric.backend.use_segment_matmul flag (#8148)
  • Added support for PyTorch 2.1.0 (#8134)
  • Added the NeuroGraphDataset benchmark collection (#8122)
  • Added support for a node-level mask tensor in dense_to_sparse (#8117)
  • Added the to_on_disk_dataset() method to convert InMemoryDataset instances to OnDiskDataset instances (#8116)
  • Added torch-frame support (#8110, #8118, #8151, #8152)
  • Added the DistLoader base class (#8079)
  • Added HyperGraphData to support hypergraphs (#7611)
  • Added the PCQM4Mv2 dataset as a reference implementation for OnDiskDataset (#8102)
  • Added module_headers property to nn.Sequential models (#8093)
  • Added OnDiskDataset interface with data loader support (#8066, #8088, #8092, #8106)
  • Added a tutorial for Node2Vec and MetaPath2Vec usage (#7938)
  • Added a tutorial for multi-GPU training with pure PyTorch (#7894)
  • Added edge_attr support to ResGatedGraphConv (#8048)
  • Added a Database interface and SQLiteDatabase/RocksDatabase implementations (#8028, #8044, #8046, #8051, #8052, #8054, #8057, #8058)
  • Added support for weighted/biased sampling in NeighborLoader/LinkNeighborLoader (#8038)
  • Added the MixHopConv layer and an corresponding example (#8025)
  • Added the option to pass keyword arguments to the underlying normalization layers within BasicGNN and MLP (#8024, #8033)
  • Added IBMBNodeLoader and IBMBBatchLoader data loaders (#6230)
  • Added the NeuralFingerprint model for learning fingerprints of molecules (#7919)
  • Added SparseTensor support to WLConvContinuous, GeneralConv, PDNConv and ARMAConv (#8013)
  • Added LCMAggregation, an implementation of Learnable Communitive Monoids, along with an example (#7976, #8020, #8023, #8026, #8075)
  • Added a warning for isolated/non-existing node types in HeteroData.validate() (#7995)
  • Added utils.cumsum implementation (#7994)
  • Added the BrcaTcga dataset (#7905)
  • Added the MyketDataset (#7959)
  • Added a multi-GPU ogbn-papers100M example (#7921)
  • Added group_argsort implementation (#7948)
  • Added CachedLoader implementation (#7896, #7897)
  • Added possibility to run training benchmarks on XPU device (#7925)
  • Added utils.ppr for personalized PageRank computation (#7917)
  • Added support for XPU device in PrefetchLoader (#7918)
  • Added support for floating-point slicing in Dataset, e.g., dataset[:0.9] (#7915)
  • Added nightly GPU tests (#7895)
  • Added the HalfHop graph upsampling augmentation (#7827)
  • Added the Wikidata5M dataset (#7864)
  • Added TorchScript support inside BasicGNN models (#7865)
  • Added a batch_size argument to unbatch functionalities (#7851)
  • Added a distributed example using graphlearn-for-pytorch (#7402)
  • Integrate neg_sampling_ratio into TemporalDataLoader (#7644)
  • Added faiss-based KNNINdex classes for L2 or maximum inner product search (#7842)
  • Added the OSE_GVCS dataset (#7811)
  • Added output_initializer argument to DimeNet models (#7774, #7780)
  • Added lexsort implementation (#7775)
  • Added possibility to run inference benchmarks on XPU device (#7705)
  • Added HeteroData support in to_networkx (#7713)
  • Added FlopsCount support via fvcore (#7693)
  • Added back support for PyTorch >= 1.11.0 (#7656)
  • Added Data.sort() and HeteroData.sort() functionalities (#7649)
  • Added torch.nested_tensor support in Data and Batch (#7643, #7647)
  • Added interval argument to Cartesian, LocalCartesian and Distance transformations (#7533, #7614, #7700)
  • Added a LightGCN example on the AmazonBook dataset (7603)
  • Added a tutorial on hierarchical neighborhood sampling (#7594)
  • Enabled different attention modes in HypergraphConv via the attention_mode argument (#7601)
  • Added the FilterEdges graph coarsening operator (#7361)
  • Added the DirGNN model for learning on directed graphs (#7458)
  • Allow GPU tensors as input to NodeLoader and LinkLoader (#7572)
  • Added an embedding_device option to allow for GPU inference in BasicGNN (#7548, #7829)
  • Added Performer to GPSConv and remove attn_dropout argument from GPSConv (#7465)
  • Enabled LinkNeighborLoader to return number of sampled nodes and edges per hop (#7516)
  • Added the HM personalized fashion recommendation dataset (#7515)
  • Added the GraphMixer model (#7501, #7459)
  • Added the disable_dynamic_shape experimental flag (#7246, #7534)
  • Added the MovieLens-1M heterogeneous dataset (#7479)
  • Added a CPU-based and GPU-based map_index implementation (#7493, #7764 #7765)
  • Added the AmazonBook heterogeneous dataset (#7483)
  • Added hierarchical heterogeneous GraphSAGE example on OGB-MAG (#7425)
  • Added the torch_geometric.distributed package (#7451, #7452), #7482, #7502, #7628, #7671, #7846, #7715, #7974)
  • Added the GDELTLite dataset (#7442)
  • Added the approx_knn function for approximated nearest neighbor search (#7421)
  • Added the IGMCDataset (#7441)
  • Added a sparse cross_entropy implementation (#7447, #7466)
  • Added the MovieLens-100K heterogeneous dataset (#7398)
  • Added the PMLP model and an example (#7370, #7543)
  • Added padding capabilities to HeteroData.to_homogeneous() in case feature dimensionalities do not match (#7374)
  • Added an optional batch_size argument to fps, knn, knn_graph, radius and radius_graph (#7368)
  • Added PrefetchLoader capabilities (#7376, #7378, #7383)
  • Added an example for hierarchical sampling (#7244)
  • Added Kùzu remote backend examples (#7298)
  • Added an optional add_pad_mask argument to the Pad transform (#7339)
  • Added keep_inter_cluster_edges option to ClusterData to support inter-subgraph edge connections when doing graph partitioning (#7326)
  • Unify graph pooling framework (#7308, #7625)
  • Added support for tuples as keys in ModuleDict/ParameterDict (#7294)
  • Added NodePropertySplit transform for creating node-level splits using structural node properties (#6894)
  • Added an option to preserve directed graphs in CitationFull datasets (#7275)
  • Added support for torch.sparse.Tensor in DataLoader (#7252)
  • Added save and load methods to InMemoryDataset (#7250, #7413)
  • Added an example for heterogeneous GNN explanation via CaptumExplainer (#7096)
  • Added visualize_feature_importance functionality to HeteroExplanation (#7096)
  • Added a AddRemainingSelfLoops transform (#7192)
  • Added optimizer_resolver (#7209)
  • Added type_ptr argument to HeteroLayerNorm (#7208)
  • Added an option to benchmark scripts to write PyTorch profiler results to CSV (#7114)
  • Added subgraph type sampling option with bidirectional edge support (#7199, #7200)
  • Added support for "any"-reductions in scatter (#7198)
  • Added manual sampling interface to NodeLoader and LinkLoader (#7197)
  • Extending torch.sparse support (#7155)
  • Added edge weight support to LightGCN (#7157)
  • Added SparseTensor support to trim_to_layer function (#7089)
  • Added instructions for ROCm build wheels (#7143)
  • Added a ComposeFilters class to compose pre_filter functions in Dataset (#7097)
  • Added a time-step aware variant of the EllipticBitcoinDataset called EllipticBitcoinTemporalDataset (#7011)
  • Added to_dgl and from_dgl conversion functions (#7053)
  • Added support for torch.jit.script within MessagePassing layers without torch_sparse being installed (#7061, #7062)
  • Added unbatching logic for torch.sparse tensors (#7037)
  • Added the RotatE KGE model (#7026)
  • Added support for Apple silicon GPU acceleration in some main examples (#7770, #7711, #7784, #7785)

Changed

  • Fixed HeteroConv for layers that have a non-default argument order, e.g., GCN2Conv (#8166)
  • Handle reserved keywords as keys in ModuleDict and ParameterDict (#8163)
  • Updated the examples and tutorials to account for torch.compile(dynamic=True) in PyTorch 2.1.0 (#8145)
  • Enabled dense eigenvalue computation in AddLaplacianEigenvectorPE for small-scale graphs (#8143)
  • Fix DynamicBatchSampler.__len__ to raise an error in case num_steps is undefined (#8137)
  • Enabled pickling of DimeNet models (#8019)
  • Changed the trim_to_layer function to filter out non-reachable node and edge types when operating on heterogeneous graphs (#7942)
  • Accelerated and simplified top_k computation in TopKPooling (#7737)
  • Updated GIN implementation in kernel benchmarks to have sequential batchnorms (#7955)
  • Fixed bugs in benchmarks caused by a lack of the device conditions for CPU and unexpected cache argument in heterogeneous models (#7956
  • Fixed a bug in which batch.e_id was not correctly computed on unsorted graph inputs (#7953)
  • Fixed from_networkx conversion from nx.stochastic_block_model graphs (#7941)
  • Fixed the usage of bias_initializer in HeteroLinear (#7923)
  • Fixed broken links in HGBDataset (#7907)
  • Fixed an issue where SetTransformerAggregation produced NaN values for isolates nodes (#7902)
  • Fixed model_summary on modules with uninitialized parameters (#7884)
  • Updated QM9 data pre-processing to include the SMILES string (#7867)
  • Fixed tracing of add_self_loops for a dynamic number of nodes (#7330)
  • Fixed device issue in PNAConv.get_degree_histogram (#7830)
  • Fixed the shape of edge_label_time when using temporal sampling on homogeneous graphs (#7807)
  • Moved torch_geometric.contrib.explain.GraphMaskExplainer to torch_geometric.explain.algorithm.GraphMaskExplainer (#7779)
  • Made FieldStatus enum picklable to avoid PicklingError in a multi-process setting (#7808)
  • Fixed edge_label_index computation in LinkNeighborLoader for the homogeneous+disjoint mode (#7791)
  • Fixed CaptumExplainer for binary_classification tasks (#7787)
  • Warn user when using the training flag in to_hetero modules (#7772)
  • Unchained exceptions raised when accessing non-existent data attributes for better readability (#7734)
  • Raise error when collecting non-existing attributes in HeteroData (#7714)
  • Renamed dest argument to dst in utils.geodesic_distance (#7708)
  • Changed add_random_edge to only add true negative edges (#7654)
  • Allowed the usage of BasicGNN models in DeepGraphInfomax (#7648)
  • Breaking Change: Made Data.keys a method rather than a property (#7629)
  • Added a num_edges parameter to the forward method of HypergraphConv (#7560)
  • Fixed get_mesh_laplacian for normalization="sym" (#7544)
  • Use dim_size to initialize output size of the EquilibriumAggregation layer (#7530)
  • Added a max_num_elements parameter to the forward method of GraphMultisetTransformer, GRUAggregation, LSTMAggregation and SetTransformerAggregation (#7529)
  • Fixed empty edge indices handling in SparseTensor (#7519)
  • Move the scaler tensor in GeneralConv to the correct device (#7484)
  • Fixed HeteroLinear bug when used via mixed precision (#7473)
  • All transforms are now immutable, i.e., they perform a shallow-copy of the data and therefore do not longer modify data in-place (#7429)
  • Set output_size in the repeat_interleave operation in QuantileAggregation (#7426)
  • Fixed gradient computation of edge weights in utils.spmm (#7428)
  • Re-factored ClusterLoader to integrate pyg-lib METIS routine (#7416)
  • Fixed an index-out-of-range bug in QuantileAggregation when dim_size is passed (#7407)
  • The filter_per_worker option will not get automatically inferred by default based on the device of the underlying data (#7399)
  • Fixed a bug in LightGCN.recommendation_loss() to only use the embeddings of the nodes involved in the current mini-batch (#7384)
  • Added an optional max_num_elements argument to SortAggregation (#7367)
  • Added the option to pass fill_value as a torch.tensor to utils.to_dense_batch (#7367)
  • Fixed a bug in which inputs where modified in-place in to_hetero_with_bases (#7363)
  • Do not load node_default and edge_default attributes in from_networkx (#7348)
  • Updated examples to use NeighborLoader instead of NeighborSampler (#7152)
  • Fixed HGTConv utility function _construct_src_node_feat (#7194)
  • Extend dataset summary to create stats for each node/edge type (#7203)
  • Added an optional batch_size argument to avg_pool_x and max_pool_x (#7216)
  • Fixed subgraph on unordered inputs (#7187)
  • Allow missing node types in HeteroDictLinear (#7185)
  • Optimized from_networkx memory footprint by reducing unnecessary copies (#7119)
  • Added an optional batch_size argument to LayerNorm, GraphNorm, InstanceNorm, GraphSizeNorm and PairNorm (#7135)
  • Improved code coverage (#7093, #7195)
  • Fix numpy incompatiblity when reading files for Planetoid datasets (#7141)
  • Added support for Data.num_edges for native torch.sparse.Tensor adjacency matrices (#7104)
  • Fixed crash of heterogeneous data loaders if node or edge types are missing (#7060, #7087)
  • Accelerated attention-based MultiAggregation (#7077)
  • Edges in HeterophilousGraphDataset are now undirected by default (#7065)
  • Fixed a bug in FastHGTConv that computed values via parameters used to compute the keys (#7050)
  • Accelerated sparse tensor conversion routines (#7042, #7043)
  • Change torch_sparse.SparseTensor logic to utilize torch.sparse_csr instead (#7041)
  • Added an optional batch_size and max_num_nodes arguments to MemPooling layer (#7239)
  • Fixed training issues of the GraphGPS example (#7377)
  • Allowed CaptumExplainer to be called multiple times in a row (#7391)

Removed

  • Dropped Python 3.7 support (#7939)
  • Removed layer_type argument in contrib.explain.GraphMaskExplainer (#7445)
  • Replaced FastHGTConv with HGTConv (#7117)

[2.3.0] - 2023-03-23

Added

  • Added a memory-efficient utils.one_hot implementation (#7005)
  • Added HeteroDictLinear and an optimized FastHGTConv module (#6178, #6998)
  • Added the DenseGATConv module (#6928)
  • Added trim_to_layer utility function for more efficient NeighborLoader use-cases (#6661)
  • Added the DistMult KGE model (#6958)
  • Added HeteroData.set_value_dict functionality (#6961, #6974)
  • Added PyTorch >= 2.0 support (#6934, #7000)
  • Added PyTorch Lightning >= 2.0 support (#6929)
  • Added the ComplEx KGE model (#6898)
  • Added option to write benchmark results to csv (#6888)
  • Added HeteroLayerNorm and HeteroBatchNorm 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 multiple NodeLoader or LinkLoader instances (#6829)
  • Added common utils.select and utils.narrow functionality to support filtering of both tensors and lists (#6162)
  • Support normalization customization in get_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 for example/film.py and example/gcn.py(#6602)
  • Added Pad transform (#5940, #6697, #6731, #6758)
  • Added full batch mode to the inference benchmark (#6631)
  • Added cat aggregation type to the HeteroConv class so that features can be concatenated during grouping (#6634)
  • Added torch.compile support and benchmark study (#6610, #6952, #6953, #6980, #6983, #6984, #6985, #6986, #6989, #7002)
  • 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 via cugraph-ops (#6278, #6388, #6412)
  • Added accelerated index_sort function from pyg-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, #6922)
  • Added the BAMultiShapesDataset (#6541)
  • Added the interfaces of a graph pooling framework (#6540)
  • Added automatic n_id and e_id attributes to mini-batches produced by NodeLoader and LinkLoader (#6524)
  • Added PGMExplainer to torch_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() and is_edge_attr() calls (#6492)
  • Added ToHeteroLinear and ToHeteroMessagePassing modules to accelerate to_hetero functionality (#5992, #6456)
  • Added GraphMaskExplainer (#6284)
  • Added the GRBCD and PRBCD adversarial attack models (#5972)
  • Added dropout option to SetTransformer and GraphMultisetTransformer (#6484)
  • Added option to customize loader arguments for evaluation in LightningNodeData and LightningLinkData (#6450, #6456)
  • Added option to customize num_neighbors in NeighborSampler 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, #6966)
  • Added support for custom HeteroData mini-batch class in remote backends (#6377)
  • Added the GNNFF model (#5866)
  • Added MLPAggregation, SetTransformerAggregation, GRUAggregation, and DeepSetsAggregation as adaptive readout functions (#6301, #6336, #6338)
  • Added Dataset.to_datapipe for converting PyG datasets into a torchdata DataPipe(#6141)
  • Added to_nested_tensor and from_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() and HeteroData.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 generate n-node cycle shaped motifs (#6256)
  • Added the InfectionDataset to evaluate explanations (#6222)
  • Added characterization_score and fidelity_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 of datasets.BAShapes is now deprecated (#6072
  • Added explainability benchmark dataset framework (#6104)
  • Added seed_time attribute to temporal NodeLoader outputs in case input_time is given (#6196)
  • Added Data.edge_subgraph and HeteroData.edge_subgraph functionalities (#6193)
  • Added input_time option to LightningNodeData and transform_sampler_output to NodeLoader and LinkLoader (#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, #6897, #6930, #6932, #6936, #6937, #6939, #6947, #6950, #6951, #6957)
  • Add inputs_channels back in training benchmark (#6154)
  • Added support for dropping nodes in utils.to_dense_batch in case max_num_nodes is smaller than the number of nodes (#6124)
  • Added the RandLA-Net architecture as an example (#5117)

Changed

  • Migrate to pyproject.toml for packaging (#6880)
  • Drop internal usage of __dunder__ names (#6999)
  • Changed the interface of sort_edge_index, coalesce and to_undirected to only return single edge_index information in case the edge_attr argument is not specified (#6875, #6879, #6893)
  • Fixed a bug in to_hetero when using an uninitialized submodule without implementing reset_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 within GNNExplainer (#6778)
  • Allow setting the EdgeStorage.num_edges property (#6710)
  • Fixed a bug in utils.bipartite_subgraph() and updated docs of HeteroData.subgraph() (#6654)
  • Properly reset the data_list cache of an InMemoryDataset when accessing dataset.data (#6685)
  • Fixed a bug in Data.subgraph() and HeteroData.subgraph() (#6613)
  • Fixed a bug in PNAConv and DegreeScalerAggregation 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 at cpu0 (#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 and LightningLinkData 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 sliced InMemoryDataset (#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 in GraphStore (#5517)
  • Replace NeighborSampler with NeighborLoader 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 empty edge_index (#6304)
  • Unify Explanation.node_mask and Explanation.node_feat_mask (#6267)
  • Moved thresholding config of the Explainer to Explanation (#6215)
  • Fixed a bug in the output order in HeteroLinear for un-sorted type vectors (#6198)
  • Breaking Change: Move ExplainerConfig arguments to the Explainer 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, #7387)
  • Optimized utils.softmax implementation (#6113, #6155, #6805)
  • Optimized topk implementation for large enough graphs (#6123)

Removed

  • 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 and Explainer from nn.models (#6382)
  • Removed target_index argument in the Explainer interface (#6270)
  • Removed Aggregation.set_validate_args option (#6175)

[2.2.0] - 2022-12-01

Added

  • 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 in VarAggregation and StdAggregation (#6042)
  • Allow for fused aggregations in MultiAggregation (#6036, #6040)
  • Added HeteroData support for to_captum_model and added to_captum_input (#5934)
  • Added HeteroData support in RandomNodeLoader (#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 in NeighborLoader (#5948)
  • Add dgNN support and FusedGATConv implementation (#5140)
  • Added lr_scheduler_solver and customized lr_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 to SuperGATConv (#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 in LightningDataModule (#5820)
  • Added a return_semantic_attention_weights argument HANConv (#5787)
  • Added disjoint argument to NeighborLoader and LinkNeighborLoader (#5775)
  • Added support for input_time in NeighborLoader (#5763)
  • Added disjoint mode for temporal LinkNeighborLoader (#5717)
  • Added HeteroData support for transforms.Constant (#5700)
  • Added np.memmap support in NeighborLoader (#5696)
  • Added assortativity that computes degree assortativity coefficient (#5587)
  • Added SSGConv layer (#5599)
  • Added shuffle_node, mask_feature and add_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 to neighbor_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 of dropout_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 the torch_geometric.data.Dataset interface (#5438)
  • Added sampler support to LightningDataModule (#5456, #5457)
  • Added official splits to MalNetTiny dataset (#5078)
  • Added IndexToMask and MaskToIndex 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 within HeteroLinear (#5330, #5347))
  • Enabled bf16 support in benchmark scripts (#5293, #5341)
  • Added Aggregation.set_validate_args option to skip validation of dim_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 with SparseTensor (#5222)
  • Added torch_geometric.explain module with base functionality for explainability methods (#5804, #6054, #6089)

Changed

  • Moved and adapted GNNExplainer from torch_geometric.nn to torch_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 and getter handling in BaseStorage (#5815)
  • Fixed path in hetero_conv_dblp.py example (#5686)
  • Fix auto_select_device routine in GraphGym for PyTorch Lightning>=1.7 (#5677)
  • Support in_channels with tuple in GENConv for bipartite message passing (#5627, #5641)
  • Handle cases of not having enough possible negative edges in RandomLinkSplit (#5642)
  • Fix RGCN+pyg-lib for LongTensor 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 in MultiAggregation (#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 . in ParameterDict key names (#5494)
  • Renamed drop_unconnected_nodes to drop_unconnected_node_types and drop_orig_edges to drop_orig_edge_types in AddMetapaths (#5490)
  • Improved utils.scatter performance by explicitly choosing better implementation for add and mean reduction (#5399)
  • Fix to_dense_adj with empty edge_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 in NeighborLoader (#5444)
  • Fixed a bug in TUDataset in which node features were wrongly constructed whenever node_attributes only hold a single feature (e.g., in PROTEINS) (#5441)
  • Breaking change: removed num_neighbors as an attribute of loader (#5404)
  • ASAPooling is now jittable (#5395)
  • Updated unsupervised GraphSAGE example to leverage LinkNeighborLoader (#5317)
  • Replace in-place operations with out-of-place ones to align with torch.scatter_reduce API (#5353)
  • Breaking bugfix: PointTransformerConv now correctly uses sum 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 within InMemoryDataset (#5299)
  • Improved name resolving of normalization layers (#5277)
  • Fail gracefully on GLIBC errors within torch-spline-conv (#5276)
  • Fixed Dataset.num_classes in case a transform modifies data.y (#5274)
  • Allow customization of the activation function within PNAConv (#5262)
  • Do not fill InMemoryDataset cache on dataset.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

  • Removed scatter_reduce option from experimental mode (#5399)

[2.1.0] - 2022-08-17

Added

  • Added the test for DeepGCNLayer (#5704)
  • Allow . in ModuleDict key names (#5227)
  • Added edge_label_time argument to LinkNeighborLoader (#5137, #5173)
  • Let ImbalancedSampler accept torch.Tensor as input (#5138)
  • Added flow argument to gcn_norm to correctly normalize the adjacency matrix in GCNConv (#5149)
  • NeighborSampler supports graphs without edges (#5072)
  • Added the MeanSubtractionNorm layer (#5068)
  • Added pyg_lib.segment_matmul integration within RGCNConv (#5052, #5096)
  • Support SparseTensor as edge label in LightGCN (#5046)
  • Added support for BasicGNN models within to_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 and dropout per layer in the MLP model (#4981)
  • Added EdgeCNN model (#4991)
  • Added scalable inference mode in BasicGNN with layer-wise neighbor loading (#4977)
  • Added inference benchmarks (#4892, #5107)
  • Added PyTorch 1.12 support (#4975)
  • Added unbatch_edge_index functionality for splitting an edge_index tensor according to a batch 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() and HeteroData.validate() functionality (#4885)
  • Added LinkNeighborLoader support to LightningDataModule (#4868)
  • Added predict() support to the LightningNodeData module (#4884)
  • Added time_attr argument to LinkNeighborLoader (#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 and GraphStore in NeighborLoader (#4817, #4851, #4854, #4856, #4857, #4882, #4883, #4929, #4992, #4962, #4968, #5037, #5088, #5270, #5307, #5318)
  • Added a normalize parameter to dense_diff_pool (#4847)
  • Added size=None explanation to jittable MessagePassing modules in the documentation (#4850)
  • Added documentation to the DataLoaderIterator class (#4838)
  • Added GraphStore support to Data and HeteroData (#4816)
  • Added FeatureStore support to Data and HeteroData (#4807, #4853)
  • Added FeatureStore and GraphStore 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 to AddMetaPaths in order to tackle very dense metapath edges (#4750)
  • Test HANConv with empty tensors (#4756, #4841)
  • Added the bias vector to the GCN model definition in the "Create Message Passing Networks" tutorial (#4755)
  • Added transforms.RootedSubgraph interface with two implementations: RootedEgoNets and RootedRWSubgraph (#3926)
  • Added ptr vectors for follow_batch attributes within Batch.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 and to_hetero() to ensure that MessagePassing.add_self_loops is disabled (4647)
  • Added HeteroData.subgraph(), HeteroData.node_type_subgraph() and HeteroData.edge_type_subgraph() support (#4635)
  • Added the AQSOL dataset (#4626)
  • Added HeteroData.node_items() and HeteroData.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 (via is_sorted=True) (#4620, #4702)
  • Added AddPositionalEncoding transform (#4521)
  • Added HeteroData.is_undirected() support (#4604)
  • Added the Genius and Wiki datasets to nn.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 the RemoveIsolatedNodes transform (#4479)
  • Added HeteroData.num_features functionality (#4504)
  • Added support for projecting features before propagation in SAGEConv (#4437)
  • Added Geom-GCN splits to the Planetoid datasets (#4442)
  • Added a LinkNeighborLoader for training scalable link predictions models #4396, #4439, #4441, #4446, #4508, #4509)
  • Added an unsupervised GraphSAGE example on PPI (#4416)
  • Added support for LSTM aggregation in SAGEConv (#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 the KNNGraph/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 the nn.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

  • Changed docstring for RandomLinkSplit (#5190)
  • Switched to PyTorch scatter_reduce implementation - experimental feature (#5120)
  • Fixed RGATConv device mismatches for f-scaled mode (#5187)
  • Allow for multi-dimensional edge_labels in LinkNeighborLoader (#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 in Linear with strict=False mode (5094)
  • Fixed typo in MaskLabel.ratio_mask (5093)
  • Fixed data.num_node_features computation for sparse matrices (5089)
  • Fixed torch.fx bug with torch.nn.aggr package (#5021))
  • Fixed GenConv test (4993)
  • Fixed packaging tests for Python 3.10 (4982)
  • Changed act_dict (part of graphgym) 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 in argparse in benchmark/ (#4967)
  • Fixed BasicGNN for num_layers=1, which now respects a desired number of out_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 wrong len 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 where pre_filter was not applied whenever pre_transform was present
  • Renamed RandomTranslate to RandomJitter - the usage of RandomTranslate 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 in RandomLinkSplit (#4757, #5221)
  • Fixed a numerical instability in the GeneralConv and neighbor_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 and setup-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 in Data (#4682, #4686)
  • Allow for optional edge_weight in GCN2Conv (#4670)
  • Fixed the interplay between TUDataset and pre_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 case return_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 in TAGConv is now actually applied (#4597)
  • Fixed subclass behavior of process and download in Datsaet (#4586)
  • Fixed filtering of attributes for loaders in case __cat_dim__ != 0 (#4629)
  • Fixed SparseTensor support in NeighborLoader (#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 the FixedPoints 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 produce out_channels-many output channels (#4299)
  • Fixed mini-batching with empty lists as attributes (#4293)
  • Fixed a bug in which GCNConv could not be combined with to_hetero on heterogeneous graphs with one node type (#4279)

Removed

  • Remove internal metrics in favor of torchmetrics (#4287)