Torch-geometric

Latest version: v2.5.3

Safety actively analyzes 623047 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

2.6.0

Added

- Added support for `EdgeIndex` in `message_and_aggregate` ([9131](https://github.com/pyg-team/pytorch_geometric/pull/9131))
- Added `CornellTemporalHyperGraphDataset` ([9090](https://github.com/pyg-team/pytorch_geometric/pull/9090))
- Added support for cuGraph data loading and `GAT` in single node Papers100m examples ([8173](https://github.com/pyg-team/pytorch_geometric/pull/8173))
- Added the `VariancePreservingAggregation` (VPA) ([9075](https://github.com/pyg-team/pytorch_geometric/pull/9075))
- Added option to pass custom` from_smiles` functionality to `PCQM4Mv2` and `MoleculeNet` ([9073](https://github.com/pyg-team/pytorch_geometric/pull/9073))
- Added `group_cat` functionality ([9029](https://github.com/pyg-team/pytorch_geometric/pull/9029))
- Added support for `EdgeIndex` in `spmm` ([9026](https://github.com/pyg-team/pytorch_geometric/pull/9026))
- Added option to pre-allocate memory in GPU-based `ApproxKNN` ([9046](https://github.com/pyg-team/pytorch_geometric/pull/9046))
- Added support for `EdgeIndex` in `MessagePassing` ([9007](https://github.com/pyg-team/pytorch_geometric/pull/9007))
- Added support for `torch.compile` in combination with `EdgeIndex` ([9007](https://github.com/pyg-team/pytorch_geometric/pull/9007))
- Added a `ogbn-mag240m` example ([8249](https://github.com/pyg-team/pytorch_geometric/pull/8249))
- Added `EdgeIndex.sparse_resize_` functionality ([8983](https://github.com/pyg-team/pytorch_geometric/pull/8983))
- Added approximate `faiss`-based KNN-search ([8952](https://github.com/pyg-team/pytorch_geometric/pull/8952))

Changed

- Ensure proper parallelism in `OnDiskDataset` for multi-threaded `get` calls ([9140](https://github.com/pyg-team/pytorch_geometric/pull/9140))
- Allow `None` outputs in `FeatureStore.get_tensor()` - `KeyError` should now be raised based on the implementation in `FeatureStore._get_tensor()` ([9102](https://github.com/pyg-team/pytorch_geometric/pull/9102))
- Allow mini-batching of uncoalesced sparse matrices ([9099](https://github.com/pyg-team/pytorch_geometric/pull/9099))
- Improvements to multi-node `ogbn-papers100m` default hyperparameters and adding evaluation on all ranks ([8823](https://github.com/pyg-team/pytorch_geometric/pull/8823))
- Changed distributed sampler and loader tests to correctly report failures in subprocesses to `pytest` ([8978](https://github.com/pyg-team/pytorch_geometric/pull/8978))
- Remove filtering of node/edge types in `trim_to_layer` functionality ([9021](https://github.com/pyg-team/pytorch_geometric/pull/9021))
- Default to `scatter` operations in `MessagePassing` in case `torch.use_deterministic_algorithms` is not set ([9009](https://github.com/pyg-team/pytorch_geometric/pull/9009))
- Made `MessagePassing` interface thread-safe ([9001](https://github.com/pyg-team/pytorch_geometric/pull/9001))
- Breaking Change: Added support for `EdgeIndex` in `cugraph` GNN layers ([8938](https://github.com/pyg-team/pytorch_geometric/pull/8937))
- Added the `dim` arg to `torch.cross` calls ([8918](https://github.com/pyg-team/pytorch_geometric/pull/8918))

Deprecated

Fixed

- Fixed incorrect treatment of `edge_label` and `edge_label_index` in `ToSparseTensor` transform ([9199](https://github.com/pyg-team/pytorch_geometric/pull/9199))
- Fixed `EgoData` processing in `SnapDataset` in case filenames are unsorted ([9195](https://github.com/pyg-team/pytorch_geometric/pull/9195))
- Fixed empty graph and isolated node handling in `to_dgl` ([9188](https://github.com/pyg-team/pytorch_geometric/pull/9188))
- Fixed bug in `to_scipy_sparse_matrix` when cuda is set as default torch device ([9146](https://github.com/pyg-team/pytorch_geometric/pull/9146))
- Fixed `MetaPath2Vec` in case the last node is isolated ([9145](https://github.com/pyg-team/pytorch_geometric/pull/9145))
- Ensure backward compatibility in `MessagePassing` via `torch.load` ([9105](https://github.com/pyg-team/pytorch_geometric/pull/9105))
- Prevent model compilation on custom `propagate` functions ([9079](https://github.com/pyg-team/pytorch_geometric/pull/9079))
- Ignore `self.propagate` appearances in comments when parsing `MessagePassing` implementation ([9044](https://github.com/pyg-team/pytorch_geometric/pull/9044))
- Fixed `OSError` on read-only file systems within `MessagePassing` ([9032](https://github.com/pyg-team/pytorch_geometric/pull/9032))
- Fixed metaclass conflict in `Dataset` ([8999](https://github.com/pyg-team/pytorch_geometric/pull/8999))
- Fixed import errors on `MessagePassing` modules with nested inheritance ([8973](https://github.com/pyg-team/pytorch_geometric/pull/8973))

Removed

2.5.0

Added

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

Changed

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

Deprecated

- Deprecated `MessagePassing.jittable` ([8781](https://github.com/pyg-team/pytorch_geometric/pull/8781))
- Deprecated the usage of `torch_geometric.compile`; Use `torch.compile` instead ([8780](https://github.com/pyg-team/pytorch_geometric/pull/8780))
- Deprecated the `typing` argument in `MessagePassing.jittable()` ([8731](https://github.com/pyg-team/pytorch_geometric/pull/8731))
- Deprecated `torch_geometric.data.makedirs` in favor of `os.makedirs` ([8421](https://github.com/pyg-team/pytorch_geometric/pull/8421))
- Deprecated `DataParallel` in favor of `DistributedDataParallel` ([8250](https://github.com/pyg-team/pytorch_geometric/pull/8250))

Fixed

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

Removed

- Removed disabling of extension packages during `torch_geometric.compile` ([8698](https://github.com/pyg-team/pytorch_geometric/pull/8698))

2.4.0

Added

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

Changed

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

Removed

- Dropped Python 3.7 support ([7939](https://github.com/pyg-team/pytorch_geometric/pull/7939))
- Removed `layer_type` argument in `contrib.explain.GraphMaskExplainer` ([7445](https://github.com/pyg-team/pytorch_geometric/pull/7445))
- Replaced `FastHGTConv` with `HGTConv` ([7117](https://github.com/pyg-team/pytorch_geometric/pull/7117))

2.3.0

Added

- Added a memory-efficient `utils.one_hot` implementation ([7005](https://github.com/pyg-team/pytorch_geometric/pull/7005))
- Added `HeteroDictLinear` and an optimized `FastHGTConv` module ([6178](https://github.com/pyg-team/pytorch_geometric/pull/6178), [#6998](https://github.com/pyg-team/pytorch_geometric/pull/6998))
- Added the `DenseGATConv` module ([6928](https://github.com/pyg-team/pytorch_geometric/pull/6928))
- Added `trim_to_layer` utility function for more efficient `NeighborLoader` use-cases ([6661](https://github.com/pyg-team/pytorch_geometric/pull/6661))
- Added the `DistMult` KGE model ([6958](https://github.com/pyg-team/pytorch_geometric/pull/6958))
- Added `HeteroData.set_value_dict` functionality ([6961](https://github.com/pyg-team/pytorch_geometric/pull/6961), [#6974](https://github.com/pyg-team/pytorch_geometric/pull/6974))
- Added PyTorch >= 2.0 support ([6934](https://github.com/pyg-team/pytorch_geometric/pull/6934), [#7000](https://github.com/pyg-team/pytorch_geometric/pull/7000))
- Added PyTorch Lightning >= 2.0 support ([6929](https://github.com/pyg-team/pytorch_geometric/pull/6929))
- Added the `ComplEx` KGE model ([6898](https://github.com/pyg-team/pytorch_geometric/pull/6898))
- Added option to write benchmark results to csv ([6888](https://github.com/pyg-team/pytorch_geometric/pull/6888))
- Added `HeteroLayerNorm` and `HeteroBatchNorm` layers ([6838](https://github.com/pyg-team/pytorch_geometric/pull/6838))
- Added the `HeterophilousGraphDataset` suite ([6846](https://github.com/pyg-team/pytorch_geometric/pull/6846))
- Added support for sparse tensor in full batch mode inference benchmark ([6843](https://github.com/pyg-team/pytorch_geometric/pull/6843))
- Enabled `NeighborLoader` to return number of sampled nodes and edges per hop ([6834](https://github.com/pyg-team/pytorch_geometric/pull/6834))
- Added `ZipLoader` to execute multiple `NodeLoader` or `LinkLoader` instances ([6829](https://github.com/pyg-team/pytorch_geometric/issues/6829))
- Added common `utils.select` and `utils.narrow` functionality to support filtering of both tensors and lists ([6162](https://github.com/pyg-team/pytorch_geometric/issues/6162))
- Support `normalization` customization in `get_mesh_laplacian` ([6790](https://github.com/pyg-team/pytorch_geometric/issues/6790))
- Added the `TemporalEncoding` module ([6785](https://github.com/pyg-team/pytorch_geometric/pull/6785))
- Added CPU-optimized `spmm_reduce` functionality via CSR format ([6699](https://github.com/pyg-team/pytorch_geometric/pull/6699), [#6759](https://github.com/pyg-team/pytorch_geometric/pull/6759))
- Added support for the revised version of the `MD17` dataset ([6734](https://github.com/pyg-team/pytorch_geometric/pull/6734))
- Added TorchScript support to the `RECT_L` model ([6727](https://github.com/pyg-team/pytorch_geometric/pull/6727))
- Added TorchScript support to the `Node2Vec` model ([6726](https://github.com/pyg-team/pytorch_geometric/pull/6726))
- Added `utils.to_edge_index` to convert sparse tensors to edge indices and edge attributes ([6728](https://github.com/pyg-team/pytorch_geometric/issues/6728))
- Fixed expected data format in `PolBlogs` dataset ([6714](https://github.com/pyg-team/pytorch_geometric/issues/6714))
- Added `SimpleConv` to perform non-trainable propagation ([6718](https://github.com/pyg-team/pytorch_geometric/pull/6718))
- Added a `RemoveDuplicatedEdges` transform ([6709](https://github.com/pyg-team/pytorch_geometric/pull/6709))
- Added TorchScript support to the `LINKX` model ([6712](https://github.com/pyg-team/pytorch_geometric/pull/6712))
- Added `torch.jit` examples for `example/film.py` and `example/gcn.py`([6602](https://github.com/pyg-team/pytorch_geometric/pull/6692))
- Added `Pad` transform ([5940](https://github.com/pyg-team/pytorch_geometric/pull/5940), [#6697](https://github.com/pyg-team/pytorch_geometric/pull/6697), [#6731](https://github.com/pyg-team/pytorch_geometric/pull/6731), [#6758](https://github.com/pyg-team/pytorch_geometric/pull/6758))
- Added full batch mode to the inference benchmark ([6631](https://github.com/pyg-team/pytorch_geometric/pull/6631))
- Added `cat` aggregation type to the `HeteroConv` class so that features can be concatenated during grouping ([6634](https://github.com/pyg-team/pytorch_geometric/pull/6634))
- Added `torch.compile` support and benchmark study ([6610](https://github.com/pyg-team/pytorch_geometric/pull/6610), [#6952](https://github.com/pyg-team/pytorch_geometric/pull/6952), [#6953](https://github.com/pyg-team/pytorch_geometric/pull/6953), [#6980](https://github.com/pyg-team/pytorch_geometric/pull/6980), [#6983](https://github.com/pyg-team/pytorch_geometric/pull/6983), [#6984](https://github.com/pyg-team/pytorch_geometric/pull/6984), [#6985](https://github.com/pyg-team/pytorch_geometric/pull/6985), [#6986](https://github.com/pyg-team/pytorch_geometric/pull/6986), [#6989](https://github.com/pyg-team/pytorch_geometric/pull/6989), [#7002](https://github.com/pyg-team/pytorch_geometric/pull/7002))
- Added the `AntiSymmetricConv` layer ([6577](https://github.com/pyg-team/pytorch_geometric/pull/6577))
- Added a mixin for Huggingface model hub integration ([5930](https://github.com/pyg-team/pytorch_geometric/pull/5930), [#6591](https://github.com/pyg-team/pytorch_geometric/pull/6591))
- Added support for accelerated GNN layers in `nn.conv.cugraph` via `cugraph-ops` ([6278](https://github.com/pyg-team/pytorch_geometric/pull/6278), [#6388](https://github.com/pyg-team/pytorch_geometric/pull/6388), [#6412](https://github.com/pyg-team/pytorch_geometric/pull/6412))
- Added accelerated `index_sort` function from `pyg-lib` for faster sorting ([6554](https://github.com/pyg-team/pytorch_geometric/pull/6554))
- Fix incorrect device in `EquilibriumAggregration` ([6560](https://github.com/pyg-team/pytorch_geometric/pull/6560))
- Added bipartite graph support in `dense_to_sparse()` ([6546](https://github.com/pyg-team/pytorch_geometric/pull/6546))
- Add CPU affinity support for more data loaders ([6534](https://github.com/pyg-team/pytorch_geometric/pull/6534), [#6922](https://github.com/pyg-team/pytorch_geometric/pull/6922))
- Added the `BAMultiShapesDataset` ([6541](https://github.com/pyg-team/pytorch_geometric/pull/6541))
- Added the interfaces of a graph pooling framework ([6540](https://github.com/pyg-team/pytorch_geometric/pull/6540))
- Added automatic `n_id` and `e_id` attributes to mini-batches produced by `NodeLoader` and `LinkLoader` ([6524](https://github.com/pyg-team/pytorch_geometric/pull/6524))
- Added `PGMExplainer` to `torch_geometric.contrib` ([6149](https://github.com/pyg-team/pytorch_geometric/pull/6149), [#6588](https://github.com/pyg-team/pytorch_geometric/pull/6588), [#6589](https://github.com/pyg-team/pytorch_geometric/pull/6589))
- Added a `NumNeighbors` helper class for specifying the number of neighbors when sampling ([6501](https://github.com/pyg-team/pytorch_geometric/pull/6501), [#6505](https://github.com/pyg-team/pytorch_geometric/pull/6505), [#6690](https://github.com/pyg-team/pytorch_geometric/pull/6690))
- Added caching to `is_node_attr()` and `is_edge_attr()` calls ([6492](https://github.com/pyg-team/pytorch_geometric/pull/6492))
- Added `ToHeteroLinear` and `ToHeteroMessagePassing` modules to accelerate `to_hetero` functionality ([5992](https://github.com/pyg-team/pytorch_geometric/pull/5992), [#6456](https://github.com/pyg-team/pytorch_geometric/pull/6456))
- Added `GraphMaskExplainer` ([6284](https://github.com/pyg-team/pytorch_geometric/pull/6284))
- Added the `GRBCD` and `PRBCD` adversarial attack models ([5972](https://github.com/pyg-team/pytorch_geometric/pull/5972))
- Added `dropout` option to `SetTransformer` and `GraphMultisetTransformer` ([6484](https://github.com/pyg-team/pytorch_geometric/pull/6484))
- Added option to customize loader arguments for evaluation in `LightningNodeData` and `LightningLinkData` ([6450](https://github.com/pyg-team/pytorch_geometric/pull/6450), [#6456](https://github.com/pyg-team/pytorch_geometric/pull/6456))
- Added option to customize `num_neighbors` in `NeighborSampler` after instantiation ([6446](https://github.com/pyg-team/pytorch_geometric/pull/6446))
- Added the `Taobao` dataset and a corresponding example for it ([6144](https://github.com/pyg-team/pytorch_geometric/pull/6144))
- Added `pyproject.toml` ([6431](https://github.com/pyg-team/pytorch_geometric/pull/6431))
- Added the `torch_geometric.contrib` sub-package ([6422](https://github.com/pyg-team/pytorch_geometric/pull/6422))
- Warn on using latest documentation ([6418](https://github.com/pyg-team/pytorch_geometric/pull/6418))
- Added basic `pyright` type checker support ([6415](https://github.com/pyg-team/pytorch_geometric/pull/6415))
- Added a new external resource for link prediction ([6396](https://github.com/pyg-team/pytorch_geometric/pull/6396))
- Added `CaptumExplainer` ([6383](https://github.com/pyg-team/pytorch_geometric/pull/6383), [#6387](https://github.com/pyg-team/pytorch_geometric/pull/6387), [#6433](https://github.com/pyg-team/pytorch_geometric/pull/6433), [#6487](https://github.com/pyg-team/pytorch_geometric/pull/6487), [#6966](https://github.com/pyg-team/pytorch_geometric/pull/6966))
- Added support for custom `HeteroData` mini-batch class in remote backends ([6377](https://github.com/pyg-team/pytorch_geometric/pull/6377))
- Added the `GNNFF` model ([5866](https://github.com/pyg-team/pytorch_geometric/pull/5866))
- Added `MLPAggregation`, `SetTransformerAggregation`, `GRUAggregation`, and `DeepSetsAggregation` as adaptive readout functions ([6301](https://github.com/pyg-team/pytorch_geometric/pull/6301), [#6336](https://github.com/pyg-team/pytorch_geometric/pull/6336), [#6338](https://github.com/pyg-team/pytorch_geometric/pull/6338))
- Added `Dataset.to_datapipe` for converting PyG datasets into a torchdata `DataPipe`([6141](https://github.com/pyg-team/pytorch_geometric/pull/6141))
- Added `to_nested_tensor` and `from_nested_tensor` functionality ([6329](https://github.com/pyg-team/pytorch_geometric/pull/6329), [#6330](https://github.com/pyg-team/pytorch_geometric/pull/6330), [#6331](https://github.com/pyg-team/pytorch_geometric/pull/6331), [#6332](https://github.com/pyg-team/pytorch_geometric/pull/6332))
- Added the `GPSConv` Graph Transformer layer and example ([6326](https://github.com/pyg-team/pytorch_geometric/pull/6326), [#6327](https://github.com/pyg-team/pytorch_geometric/pull/6327))
- Added `networkit` conversion utilities ([6321](https://github.com/pyg-team/pytorch_geometric/pull/6321))
- Added global dataset attribute access via `dataset.{attr_name}` ([6319](https://github.com/pyg-team/pytorch_geometric/pull/6319))
- Added the `TransE` KGE model and example ([6314](https://github.com/pyg-team/pytorch_geometric/pull/6314))
- Added the Freebase `FB15k_237` dataset ([3204](https://github.com/pyg-team/pytorch_geometric/pull/3204))
- Added `Data.update()` and `HeteroData.update()` functionality ([6313](https://github.com/pyg-team/pytorch_geometric/pull/6313))
- Added `PGExplainer` ([6204](https://github.com/pyg-team/pytorch_geometric/pull/6204))
- Added the `AirfRANS` dataset ([6287](https://github.com/pyg-team/pytorch_geometric/pull/6287))
- Added `AttentionExplainer` ([6279](https://github.com/pyg-team/pytorch_geometric/pull/6279))
- Added (un)faithfulness explainability metric ([6090](https://github.com/pyg-team/pytorch_geometric/pull/6090))
- Added fidelity explainability metric ([6116](https://github.com/pyg-team/pytorch_geometric/pull/6116), [#6510](https://github.com/pyg-team/pytorch_geometric/pull/6510))
- Added subgraph visualization of GNN explanations ([6235](https://github.com/pyg-team/pytorch_geometric/pull/6235), [#6271](https://github.com/pyg-team/pytorch_geometric/pull/6271))
- Added weighted negative sampling option in `LinkNeighborLoader` ([6264](https://github.com/pyg-team/pytorch_geometric/pull/6264))
- Added the `BA2MotifDataset` explainer dataset ([6257](https://github.com/pyg-team/pytorch_geometric/pull/6257))
- Added `CycleMotif` motif generator to generate `n`-node cycle shaped motifs ([6256](https://github.com/pyg-team/pytorch_geometric/pull/6256))
- Added the `InfectionDataset` to evaluate explanations ([6222](https://github.com/pyg-team/pytorch_geometric/pull/6222))
- Added `characterization_score` and `fidelity_curve_auc` explainer metrics ([6188](https://github.com/pyg-team/pytorch_geometric/pull/6188))
- Added `get_message_passing_embeddings` ([6201](https://github.com/pyg-team/pytorch_geometric/pull/6201))
- Added the `PointGNNConv` layer ([6194](https://github.com/pyg-team/pytorch_geometric/pull/6194))
- Added `GridGraph` graph generator to generate grid graphs ([6220](https://github.com/pyg-team/pytorch_geometric/pull/6220)
- Added explainability metrics for when ground truth is available ([6137](https://github.com/pyg-team/pytorch_geometric/pull/6137))
- Added `visualize_feature_importance` to support node feature visualizations ([6094](https://github.com/pyg-team/pytorch_geometric/pull/6094))
- Added heterogeneous graph support to `Explanation` framework ([6091](https://github.com/pyg-team/pytorch_geometric/pull/6091), [#6218](https://github.com/pyg-team/pytorch_geometric/pull/6218))
- Added a `CustomMotif` motif generator ([6179](https://github.com/pyg-team/pytorch_geometric/pull/6179))
- Added `ERGraph` graph generator to generate Ergos-Renyi (ER) graphs ([6073](https://github.com/pyg-team/pytorch_geometric/pull/6073))
- Added `BAGraph` graph generator to generate Barabasi-Albert graphs - the usage of `datasets.BAShapes` is now deprecated ([6072](https://github.com/pyg-team/pytorch_geometric/pull/6072)
- Added explainability benchmark dataset framework ([6104](https://github.com/pyg-team/pytorch_geometric/pull/6104))
- Added `seed_time` attribute to temporal `NodeLoader` outputs in case `input_time` is given ([6196](https://github.com/pyg-team/pytorch_geometric/pull/6196))
- Added `Data.edge_subgraph` and `HeteroData.edge_subgraph` functionalities ([6193](https://github.com/pyg-team/pytorch_geometric/pull/6193))
- Added `input_time` option to `LightningNodeData` and `transform_sampler_output` to `NodeLoader` and `LinkLoader` ([6187](https://github.com/pyg-team/pytorch_geometric/pull/6187))
- Added `summary` for PyG/PyTorch models ([5859](https://github.com/pyg-team/pytorch_geometric/pull/5859), [#6161](https://github.com/pyg-team/pytorch_geometric/pull/6161))
- Started adding `torch.sparse` support to PyG ([5906](https://github.com/pyg-team/pytorch_geometric/pull/5906), [#5944](https://github.com/pyg-team/pytorch_geometric/pull/5944), [#6003](https://github.com/pyg-team/pytorch_geometric/pull/6003), [#6033](https://github.com/pyg-team/pytorch_geometric/pull/6033), [#6514](https://github.com/pyg-team/pytorch_geometric/pull/6514), [#6532](https://github.com/pyg-team/pytorch_geometric/pull/6532), [#6748](https://github.com/pyg-team/pytorch_geometric/pull/6748), [#6847](https://github.com/pyg-team/pytorch_geometric/pull/6847), [#6868](https://github.com/pyg-team/pytorch_geometric/pull/6868), [#6874](https://github.com/pyg-team/pytorch_geometric/pull/6874), [#6897](https://github.com/pyg-team/pytorch_geometric/pull/6897), [#6930](https://github.com/pyg-team/pytorch_geometric/pull/6930), [#6932](https://github.com/pyg-team/pytorch_geometric/pull/6932), [#6936](https://github.com/pyg-team/pytorch_geometric/pull/6936), [#6937](https://github.com/pyg-team/pytorch_geometric/pull/6937), [#6939](https://github.com/pyg-team/pytorch_geometric/pull/6939), [#6947](https://github.com/pyg-team/pytorch_geometric/pull/6947), [#6950](https://github.com/pyg-team/pytorch_geometric/pull/6950), [#6951](https://github.com/pyg-team/pytorch_geometric/pull/6951), [#6957](https://github.com/pyg-team/pytorch_geometric/pull/6957))
- Add `inputs_channels` back in training benchmark ([6154](https://github.com/pyg-team/pytorch_geometric/pull/6154))
- Added support for dropping nodes in `utils.to_dense_batch` in case `max_num_nodes` is smaller than the number of nodes ([6124](https://github.com/pyg-team/pytorch_geometric/pull/6124))
- Added the RandLA-Net architecture as an example ([5117](https://github.com/pyg-team/pytorch_geometric/pull/5117))

Changed

- Migrate to `pyproject.toml` for packaging ([6880](https://github.com/pyg-team/pytorch_geometric/pull/6880))
- Drop internal usage of `__dunder__` names ([6999](https://github.com/pyg-team/pytorch_geometric/issues/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](https://github.com/pyg-team/pytorch_geometric/issues/6875), [#6879](https://github.com/pyg-team/pytorch_geometric/issues/6879), [#6893](https://github.com/pyg-team/pytorch_geometric/issues/6893))
- Fixed a bug in `to_hetero` when using an uninitialized submodule without implementing `reset_parameters` ([6863](https://github.com/pyg-team/pytorch_geometric/issues/6790))
- Fixed a bug in `get_mesh_laplacian` ([6790](https://github.com/pyg-team/pytorch_geometric/issues/6790))
- Fixed a bug in which masks were not properly masked in `GNNExplainer` on link prediction tasks ([6787](https://github.com/pyg-team/pytorch_geometric/pull/6787))
- Allow the usage of `ChebConv` within `GNNExplainer` ([6778](https://github.com/pyg-team/pytorch_geometric/pull/6778))
- Allow setting the `EdgeStorage.num_edges` property ([6710](https://github.com/pyg-team/pytorch_geometric/pull/6710))
- Fixed a bug in `utils.bipartite_subgraph()` and updated docs of `HeteroData.subgraph()` ([6654](https://github.com/pyg-team/pytorch_geometric/pull/6654))
- Properly reset the `data_list` cache of an `InMemoryDataset` when accessing `dataset.data` ([6685](https://github.com/pyg-team/pytorch_geometric/pull/6685))
- Fixed a bug in `Data.subgraph()` and `HeteroData.subgraph()` ([6613](https://github.com/pyg-team/pytorch_geometric/pull/6613))
- Fixed a bug in `PNAConv` and `DegreeScalerAggregation` to correctly incorporate degree statistics of isolated nodes ([6609](https://github.com/pyg-team/pytorch_geometric/pull/6609))
- Improved code coverage ([6523](https://github.com/pyg-team/pytorch_geometric/pull/6523), [#6538](https://github.com/pyg-team/pytorch_geometric/pull/6538), [#6555](https://github.com/pyg-team/pytorch_geometric/pull/6555), [#6558](https://github.com/pyg-team/pytorch_geometric/pull/6558), [#6568](https://github.com/pyg-team/pytorch_geometric/pull/6568), [#6573](https://github.com/pyg-team/pytorch_geometric/pull/6573), [#6578](https://github.com/pyg-team/pytorch_geometric/pull/6578), [#6597](https://github.com/pyg-team/pytorch_geometric/pull/6597), [#6600](https://github.com/pyg-team/pytorch_geometric/pull/6600), [#6618](https://github.com/pyg-team/pytorch_geometric/pull/6618), [#6619](https://github.com/pyg-team/pytorch_geometric/pull/6619), [#6621](https://github.com/pyg-team/pytorch_geometric/pull/6621), [#6623](https://github.com/pyg-team/pytorch_geometric/pull/6623), [#6637](https://github.com/pyg-team/pytorch_geometric/pull/6637), [#6638](https://github.com/pyg-team/pytorch_geometric/pull/6638), [#6640](https://github.com/pyg-team/pytorch_geometric/pull/6640), [#6645](https://github.com/pyg-team/pytorch_geometric/pull/6645), [#6648](https://github.com/pyg-team/pytorch_geometric/pull/6648), [#6647](https://github.com/pyg-team/pytorch_geometric/pull/6647), [#6653](https://github.com/pyg-team/pytorch_geometric/pull/6653), [#6657](https://github.com/pyg-team/pytorch_geometric/pull/6657), [#6662](https://github.com/pyg-team/pytorch_geometric/pull/6662), [#6664](https://github.com/pyg-team/pytorch_geometric/pull/6664), [#6667](https://github.com/pyg-team/pytorch_geometric/pull/6667), [#6668](https://github.com/pyg-team/pytorch_geometric/pull/6668), [#6669](https://github.com/pyg-team/pytorch_geometric/pull/6669), [#6670](https://github.com/pyg-team/pytorch_geometric/pull/6670), [#6671](https://github.com/pyg-team/pytorch_geometric/pull/6671), [#6673](https://github.com/pyg-team/pytorch_geometric/pull/6673), [#6675](https://github.com/pyg-team/pytorch_geometric/pull/6675), [#6676](https://github.com/pyg-team/pytorch_geometric/pull/6676), [#6677](https://github.com/pyg-team/pytorch_geometric/pull/6677), [#6678](https://github.com/pyg-team/pytorch_geometric/pull/6678), [#6681](https://github.com/pyg-team/pytorch_geometric/pull/6681), [#6683](https://github.com/pyg-team/pytorch_geometric/pull/6683), [#6703](https://github.com/pyg-team/pytorch_geometric/pull/6703), [#6720](https://github.com/pyg-team/pytorch_geometric/pull/6720), [#6735](https://github.com/pyg-team/pytorch_geometric/pull/6735), [#6736](https://github.com/pyg-team/pytorch_geometric/pull/6736), [#6763](https://github.com/pyg-team/pytorch_geometric/pull/6763), [#6781](https://github.com/pyg-team/pytorch_geometric/pull/6781), [#6797](https://github.com/pyg-team/pytorch_geometric/pull/6797), [#6799](https://github.com/pyg-team/pytorch_geometric/pull/6799), [#6824](https://github.com/pyg-team/pytorch_geometric/pull/6824), [#6858](https://github.com/pyg-team/pytorch_geometric/pull/6858))
- Fixed a bug in which `data.to_heterogeneous()` filtered attributs in the wrong dimension ([6522](https://github.com/pyg-team/pytorch_geometric/pull/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](https://github.com/pyg-team/pytorch_geometric/pull/6517))
- Changed `DataLoader` workers with affinity to start at `cpu0` ([6512](https://github.com/pyg-team/pytorch_geometric/pull/6512))
- Allow 1D input to `global_*_pool` functions ([6504](https://github.com/pyg-team/pytorch_geometric/pull/6504))
- Add information about dynamic shapes in `RGCNConv` ([6482](https://github.com/pyg-team/pytorch_geometric/pull/6482))
- Fixed the use of types removed in `numpy 1.24.0` ([6495](https://github.com/pyg-team/pytorch_geometric/pull/6495))
- Fixed keyword parameters in `examples/mnist_voxel_grid.py` ([6478](https://github.com/pyg-team/pytorch_geometric/pull/6478))
- Unified `LightningNodeData` and `LightningLinkData` code paths ([6473](https://github.com/pyg-team/pytorch_geometric/pull/6473))
- Allow indices with any integer type in `RGCNConv` ([6463](https://github.com/pyg-team/pytorch_geometric/pull/6463))
- Re-structured the documentation ([6420](https://github.com/pyg-team/pytorch_geometric/pull/6420), [#6423](https://github.com/pyg-team/pytorch_geometric/pull/6423), [#6429](https://github.com/pyg-team/pytorch_geometric/pull/6429), [#6440](https://github.com/pyg-team/pytorch_geometric/pull/6440), [#6443](https://github.com/pyg-team/pytorch_geometric/pull/6443), [#6445](https://github.com/pyg-team/pytorch_geometric/pull/6445), [#6452](https://github.com/pyg-team/pytorch_geometric/pull/6452), [#6453](https://github.com/pyg-team/pytorch_geometric/pull/6453), [#6458](https://github.com/pyg-team/pytorch_geometric/pull/6458), [#6459](https://github.com/pyg-team/pytorch_geometric/pull/6459), [#6460](https://github.com/pyg-team/pytorch_geometric/pull/6460), [#6490](https://github.com/pyg-team/pytorch_geometric/pull/6490), [#6491](https://github.com/pyg-team/pytorch_geometric/pull/6491), [#6693](https://github.com/pyg-team/pytorch_geometric/pull/6693), [#6744](https://github.com/pyg-team/pytorch_geometric/pull/6744))
- Fix the default arguments of `DataParallel` class ([6376](https://github.com/pyg-team/pytorch_geometric/pull/6376))
- Fix `ImbalancedSampler` on sliced `InMemoryDataset` ([6374](https://github.com/pyg-team/pytorch_geometric/pull/6374))
- Breaking Change: Changed the interface and implementation of `GraphMultisetTransformer` ([6343](https://github.com/pyg-team/pytorch_geometric/pull/6343))
- Fixed the approximate PPR variant in `transforms.GDC` to not crash on graphs with isolated nodes ([6242](https://github.com/pyg-team/pytorch_geometric/pull/6242))
- Added a warning when accesing `InMemoryDataset.data` ([6318](https://github.com/pyg-team/pytorch_geometric/pull/6318))
- Drop `SparseTensor` dependency in `GraphStore` ([5517](https://github.com/pyg-team/pytorch_geometric/pull/5517))
- Replace `NeighborSampler` with `NeighborLoader` in the distributed sampling example ([6204](https://github.com/pyg-team/pytorch_geometric/pull/6307))
- Fixed the filtering of node features in `transforms.RemoveIsolatedNodes` ([6308](https://github.com/pyg-team/pytorch_geometric/pull/6308))
- Fixed a bug in `DimeNet` that causes a output dimension mismatch ([6305](https://github.com/pyg-team/pytorch_geometric/pull/6305))
- Fixed `Data.to_heterogeneous()` with empty `edge_index` ([6304](https://github.com/pyg-team/pytorch_geometric/pull/6304))
- Unify `Explanation.node_mask` and `Explanation.node_feat_mask` ([6267](https://github.com/pyg-team/pytorch_geometric/pull/6267))
- Moved thresholding config of the `Explainer` to `Explanation` ([6215](https://github.com/pyg-team/pytorch_geometric/pull/6215))
- Fixed a bug in the output order in `HeteroLinear` for un-sorted type vectors ([6198](https://github.com/pyg-team/pytorch_geometric/pull/6198))
- Breaking Change: Move `ExplainerConfig` arguments to the `Explainer` class ([6176](https://github.com/pyg-team/pytorch_geometric/pull/6176))
- Refactored `NeighborSampler` to be input-type agnostic ([6173](https://github.com/pyg-team/pytorch_geometric/pull/6173))
- Infer correct CUDA device ID in `profileit` decorator ([6164](https://github.com/pyg-team/pytorch_geometric/pull/6164))
- Correctly use edge weights in `GDC` example ([6159](https://github.com/pyg-team/pytorch_geometric/pull/6159))
- Breaking Change: Moved PyTorch Lightning data modules to `torch_geometric.data.lightning` ([6140](https://github.com/pyg-team/pytorch_geometric/pull/6140))
- Make `torch_sparse` an optional dependency ([6132](https://github.com/pyg-team/pytorch_geometric/pull/6132), [#6134](https://github.com/pyg-team/pytorch_geometric/pull/6134), [#6138](https://github.com/pyg-team/pytorch_geometric/pull/6138), [#6139](https://github.com/pyg-team/pytorch_geometric/pull/6139), [#7387](https://github.com/pyg-team/pytorch_geometric/pull/7387))
- Optimized `utils.softmax` implementation ([6113](https://github.com/pyg-team/pytorch_geometric/pull/6113), [#6155](https://github.com/pyg-team/pytorch_geometric/pull/6155), [#6805](https://github.com/pyg-team/pytorch_geometric/pull/6805))
- Optimized `topk` implementation for large enough graphs ([6123](https://github.com/pyg-team/pytorch_geometric/pull/6123))

Removed

- `torch-sparse` is now an optional dependency ([6625](https://github.com/pyg-team/pytorch_geometric/pull/6625), [#6626](https://github.com/pyg-team/pytorch_geometric/pull/6626), [#6627](https://github.com/pyg-team/pytorch_geometric/pull/6627), [#6628](https://github.com/pyg-team/pytorch_geometric/pull/6628), [#6629](https://github.com/pyg-team/pytorch_geometric/pull/6629), [#6630](https://github.com/pyg-team/pytorch_geometric/pull/6630))
- Removed most of the `torch-scatter` dependencies ([6394](https://github.com/pyg-team/pytorch_geometric/pull/6394), [#6395](https://github.com/pyg-team/pytorch_geometric/pull/6395), [#6399](https://github.com/pyg-team/pytorch_geometric/pull/6399), [#6400](https://github.com/pyg-team/pytorch_geometric/pull/6400), [#6615](https://github.com/pyg-team/pytorch_geometric/pull/6615), [#6617](https://github.com/pyg-team/pytorch_geometric/pull/6617))
- Removed the deprecated classes `GNNExplainer` and `Explainer` from `nn.models` ([6382](https://github.com/pyg-team/pytorch_geometric/pull/6382))
- Removed `target_index` argument in the `Explainer` interface ([6270](https://github.com/pyg-team/pytorch_geometric/pull/6270))
- Removed `Aggregation.set_validate_args` option ([6175](https://github.com/pyg-team/pytorch_geometric/pull/6175))

2.2.0

Added

- Extended `GNNExplainer` to support edge level explanations ([6056](https://github.com/pyg-team/pytorch_geometric/pull/6056), [#6083](https://github.com/pyg-team/pytorch_geometric/pull/6083))
- Added CPU affinitization for `NodeLoader` ([6005](https://github.com/pyg-team/pytorch_geometric/pull/6005))
- Added triplet sampling in `LinkNeighborLoader` ([6004](https://github.com/pyg-team/pytorch_geometric/pull/6004))
- Added `FusedAggregation` of simple scatter reductions ([6036](https://github.com/pyg-team/pytorch_geometric/pull/6036))
- Added a `to_smiles` function ([6038](https://github.com/pyg-team/pytorch_geometric/pull/6038))
- Added option to make normalization coefficients trainable in `PNAConv` ([6039](https://github.com/pyg-team/pytorch_geometric/pull/6039))
- Added `semi_grad` option in `VarAggregation` and `StdAggregation` ([6042](https://github.com/pyg-team/pytorch_geometric/pull/6042))
- Allow for fused aggregations in `MultiAggregation` ([6036](https://github.com/pyg-team/pytorch_geometric/pull/6036), [#6040](https://github.com/pyg-team/pytorch_geometric/pull/6040))
- Added `HeteroData` support for `to_captum_model` and added `to_captum_input` ([5934](https://github.com/pyg-team/pytorch_geometric/pull/5934))
- Added `HeteroData` support in `RandomNodeLoader` ([6007](https://github.com/pyg-team/pytorch_geometric/pull/6007))
- Added bipartite `GraphSAGE` example ([5834](https://github.com/pyg-team/pytorch_geometric/pull/5834))
- Added `LRGBDataset` to include 5 datasets from the [Long Range Graph Benchmark](https://openreview.net/pdf?id=in7XC5RcjEn) ([#5935](https://github.com/pyg-team/pytorch_geometric/pull/5935))
- Added a warning for invalid node and edge type names in `HeteroData` ([5990](https://github.com/pyg-team/pytorch_geometric/pull/5990))
- Added PyTorch 1.13 support ([5975](https://github.com/pyg-team/pytorch_geometric/pull/5975))
- Added `int32` support in `NeighborLoader` ([5948](https://github.com/pyg-team/pytorch_geometric/pull/5948))
- Add `dgNN` support and `FusedGATConv` implementation ([5140](https://github.com/pyg-team/pytorch_geometric/pull/5140))
- Added `lr_scheduler_solver` and customized `lr_scheduler` classes ([5942](https://github.com/pyg-team/pytorch_geometric/pull/5942))
- Add `to_fixed_size` graph transformer ([5939](https://github.com/pyg-team/pytorch_geometric/pull/5939))
- Add support for symbolic tracing of `SchNet` model ([5938](https://github.com/pyg-team/pytorch_geometric/pull/5938))
- Add support for customizable interaction graph in `SchNet` model ([5919](https://github.com/pyg-team/pytorch_geometric/pull/5919))
- Started adding `torch.sparse` support to PyG ([5906](https://github.com/pyg-team/pytorch_geometric/pull/5906), [#5944](https://github.com/pyg-team/pytorch_geometric/pull/5944), [#6003](https://github.com/pyg-team/pytorch_geometric/pull/6003), [#6633](https://github.com/pyg-team/pytorch_geometric/pull/6633))
- Added `HydroNet` water cluster dataset ([5537](https://github.com/pyg-team/pytorch_geometric/pull/5537), [#5902](https://github.com/pyg-team/pytorch_geometric/pull/5902), [#5903](https://github.com/pyg-team/pytorch_geometric/pull/5903))
- Added explainability support for heterogeneous GNNs ([5886](https://github.com/pyg-team/pytorch_geometric/pull/5886))
- Added `SparseTensor` support to `SuperGATConv` ([5888](https://github.com/pyg-team/pytorch_geometric/pull/5888))
- Added TorchScript support for `AttentiveFP `([5868](https://github.com/pyg-team/pytorch_geometric/pull/5868))
- Added `num_steps` argument to training and inference benchmarks ([5898](https://github.com/pyg-team/pytorch_geometric/pull/5898))
- Added `torch.onnx.export` support ([5877](https://github.com/pyg-team/pytorch_geometric/pull/5877), [#5997](https://github.com/pyg-team/pytorch_geometric/pull/5997))
- Enable VTune ITT in inference and training benchmarks ([5830](https://github.com/pyg-team/pytorch_geometric/pull/5830), [#5878](https://github.com/pyg-team/pytorch_geometric/pull/5878))
- Add training benchmark ([5774](https://github.com/pyg-team/pytorch_geometric/pull/5774))
- Added a "Link Prediction on MovieLens" Colab notebook ([5823](https://github.com/pyg-team/pytorch_geometric/pull/5823))
- Added custom `sampler` support in `LightningDataModule` ([5820](https://github.com/pyg-team/pytorch_geometric/pull/5820))
- Added a `return_semantic_attention_weights` argument `HANConv` ([5787](https://github.com/pyg-team/pytorch_geometric/pull/5787))
- Added `disjoint` argument to `NeighborLoader` and `LinkNeighborLoader` ([5775](https://github.com/pyg-team/pytorch_geometric/pull/5775))
- Added support for `input_time` in `NeighborLoader` ([5763](https://github.com/pyg-team/pytorch_geometric/pull/5763))
- Added `disjoint` mode for temporal `LinkNeighborLoader` ([5717](https://github.com/pyg-team/pytorch_geometric/pull/5717))
- Added `HeteroData` support for `transforms.Constant` ([5700](https://github.com/pyg-team/pytorch_geometric/pull/5700))
- Added `np.memmap` support in `NeighborLoader` ([5696](https://github.com/pyg-team/pytorch_geometric/pull/5696))
- Added `assortativity` that computes degree assortativity coefficient ([5587](https://github.com/pyg-team/pytorch_geometric/pull/5587))
- Added `SSGConv` layer ([5599](https://github.com/pyg-team/pytorch_geometric/pull/5599))
- Added `shuffle_node`, `mask_feature` and `add_random_edge` augmentation methdos ([5548](https://github.com/pyg-team/pytorch_geometric/pull/5548))
- Added `dropout_path` augmentation that drops edges from a graph based on random walks ([5531](https://github.com/pyg-team/pytorch_geometric/pull/5531))
- Add support for filling labels with dummy values in `HeteroData.to_homogeneous()` ([5540](https://github.com/pyg-team/pytorch_geometric/pull/5540))
- Added `temporal_strategy` option to `neighbor_sample` ([5576](https://github.com/pyg-team/pyg-lib/pull/5576))
- Added `torch_geometric.sampler` package to docs ([5563](https://github.com/pyg-team/pytorch_geometric/pull/5563))
- Added the `DGraphFin` dynamic graph dataset ([5504](https://github.com/pyg-team/pytorch_geometric/pull/5504))
- Added `dropout_edge` augmentation that randomly drops edges from a graph - the usage of `dropout_adj` is now deprecated ([5495](https://github.com/pyg-team/pytorch_geometric/pull/5495))
- Added `dropout_node` augmentation that randomly drops nodes from a graph ([5481](https://github.com/pyg-team/pytorch_geometric/pull/5481))
- Added `AddRandomMetaPaths` that adds edges based on random walks along a metapath ([5397](https://github.com/pyg-team/pytorch_geometric/pull/5397))
- Added `WLConvContinuous` for performing WL refinement with continuous attributes ([5316](https://github.com/pyg-team/pytorch_geometric/pull/5316))
- Added `print_summary` method for the `torch_geometric.data.Dataset` interface ([5438](https://github.com/pyg-team/pytorch_geometric/pull/5438))
- Added `sampler` support to `LightningDataModule` ([5456](https://github.com/pyg-team/pytorch_geometric/pull/5456), [#5457](https://github.com/pyg-team/pytorch_geometric/pull/5457))
- Added official splits to `MalNetTiny` dataset ([5078](https://github.com/pyg-team/pytorch_geometric/pull/5078))
- Added `IndexToMask` and `MaskToIndex` transforms ([5375](https://github.com/pyg-team/pytorch_geometric/pull/5375), [#5455](https://github.com/pyg-team/pytorch_geometric/pull/5455))
- Added `FeaturePropagation` transform ([5387](https://github.com/pyg-team/pytorch_geometric/pull/5387))
- Added `PositionalEncoding` ([5381](https://github.com/pyg-team/pytorch_geometric/pull/5381))
- Consolidated sampler routines behind `torch_geometric.sampler`, enabling ease of extensibility in the future ([5312](https://github.com/pyg-team/pytorch_geometric/pull/5312), [#5365](https://github.com/pyg-team/pytorch_geometric/pull/5365), [#5402](https://github.com/pyg-team/pytorch_geometric/pull/5402), [#5404](https://github.com/pyg-team/pytorch_geometric/pull/5404)), [#5418](https://github.com/pyg-team/pytorch_geometric/pull/5418))
- Added `pyg-lib` neighbor sampling ([5384](https://github.com/pyg-team/pytorch_geometric/pull/5384), [#5388](https://github.com/pyg-team/pytorch_geometric/pull/5388))
- Added `pyg_lib.segment_matmul` integration within `HeteroLinear` ([5330](https://github.com/pyg-team/pytorch_geometric/pull/5330), [#5347](https://github.com/pyg-team/pytorch_geometric/pull/5347)))
- Enabled `bf16` support in benchmark scripts ([5293](https://github.com/pyg-team/pytorch_geometric/pull/5293), [#5341](https://github.com/pyg-team/pytorch_geometric/pull/5341))
- Added `Aggregation.set_validate_args` option to skip validation of `dim_size` ([5290](https://github.com/pyg-team/pytorch_geometric/pull/5290))
- Added `SparseTensor` support to inference and training benchmark suite ([5242](https://github.com/pyg-team/pytorch_geometric/pull/5242), [#5258](https://github.com/pyg-team/pytorch_geometric/pull/5258), [#5881](https://github.com/pyg-team/pytorch_geometric/pull/5881))
- Added experimental mode in inference benchmarks ([5254](https://github.com/pyg-team/pytorch_geometric/pull/5254))
- Added node classification example instrumented with [Weights and Biases (W&B) logging](https://wandb.com) and [W&B Sweeps](https://wandb.com/sweeps) ([#5192](https://github.com/pyg-team/pytorch_geometric/pull/5192))
- Added experimental mode for `utils.scatter` ([5232](https://github.com/pyg-team/pytorch_geometric/pull/5232), [#5241](https://github.com/pyg-team/pytorch_geometric/pull/5241), [#5386](https://github.com/pyg-team/pytorch_geometric/pull/5386))
- Added missing test labels in `HGBDataset` ([5233](https://github.com/pyg-team/pytorch_geometric/pull/5233))
- Added `BaseStorage.get()` functionality ([5240](https://github.com/pyg-team/pytorch_geometric/pull/5240))
- Added a test to confirm that `to_hetero` works with `SparseTensor` ([5222](https://github.com/pyg-team/pytorch_geometric/pull/5222))
- Added `torch_geometric.explain` module with base functionality for explainability methods ([5804](https://github.com/pyg-team/pytorch_geometric/pull/5804), [#6054](https://github.com/pyg-team/pytorch_geometric/pull/6054), [#6089](https://github.com/pyg-team/pytorch_geometric/pull/6089))

Changed

- Moved and adapted `GNNExplainer` from `torch_geometric.nn` to `torch_geometric.explain.algorithm` ([5967](https://github.com/pyg-team/pytorch_geometric/pull/5967), [#6065](https://github.com/pyg-team/pytorch_geometric/pull/6065))
- Optimized scatter implementations for CPU/GPU, both with and without backward computation ([6051](https://github.com/pyg-team/pytorch_geometric/pull/6051), [#6052](https://github.com/pyg-team/pytorch_geometric/pull/6052))
- Support temperature value in `dense_mincut_pool` ([5908](https://github.com/pyg-team/pytorch_geometric/pull/5908))
- Fixed a bug in which `VirtualNode` mistakenly treated node features as edge features ([5819](https://github.com/pyg-team/pytorch_geometric/pull/5819))
- Fixed `setter` and `getter` handling in `BaseStorage` ([5815](https://github.com/pyg-team/pytorch_geometric/pull/5815))
- Fixed `path` in `hetero_conv_dblp.py` example ([5686](https://github.com/pyg-team/pytorch_geometric/pull/5686))
- Fix `auto_select_device` routine in GraphGym for PyTorch Lightning>=1.7 ([5677](https://github.com/pyg-team/pytorch_geometric/pull/5677))
- Support `in_channels` with `tuple` in `GENConv` for bipartite message passing ([5627](https://github.com/pyg-team/pytorch_geometric/pull/5627), [#5641](https://github.com/pyg-team/pytorch_geometric/pull/5641))
- Handle cases of not having enough possible negative edges in `RandomLinkSplit` ([5642](https://github.com/pyg-team/pytorch_geometric/pull/5642))
- Fix `RGCN+pyg-lib` for `LongTensor` input ([5610](https://github.com/pyg-team/pytorch_geometric/pull/5610))
- Improved type hint support ([5842](https://github.com/pyg-team/pytorch_geometric/pull/5842), [#5603](https://github.com/pyg-team/pytorch_geometric/pull/5603), [#5659](https://github.com/pyg-team/pytorch_geometric/pull/5659), [#5664](https://github.com/pyg-team/pytorch_geometric/pull/5664), [#5665](https://github.com/pyg-team/pytorch_geometric/pull/5665), [#5666](https://github.com/pyg-team/pytorch_geometric/pull/5666), [#5667](https://github.com/pyg-team/pytorch_geometric/pull/5667), [#5668](https://github.com/pyg-team/pytorch_geometric/pull/5668), [#5669](https://github.com/pyg-team/pytorch_geometric/pull/5669), [#5673](https://github.com/pyg-team/pytorch_geometric/pull/5673), [#5675](https://github.com/pyg-team/pytorch_geometric/pull/5675), [#5673](https://github.com/pyg-team/pytorch_geometric/pull/5676), [#5678](https://github.com/pyg-team/pytorch_geometric/pull/5678), [#5682](https://github.com/pyg-team/pytorch_geometric/pull/5682), [#5683](https://github.com/pyg-team/pytorch_geometric/pull/5683), [#5684](https://github.com/pyg-team/pytorch_geometric/pull/5684), [#5685](https://github.com/pyg-team/pytorch_geometric/pull/5685), [#5687](https://github.com/pyg-team/pytorch_geometric/pull/5687), [#5688](https://github.com/pyg-team/pytorch_geometric/pull/5688), [#5695](https://github.com/pyg-team/pytorch_geometric/pull/5695), [#5699](https://github.com/pyg-team/pytorch_geometric/pull/5699), [#5701](https://github.com/pyg-team/pytorch_geometric/pull/5701), [#5702](https://github.com/pyg-team/pytorch_geometric/pull/5702), [#5703](https://github.com/pyg-team/pytorch_geometric/pull/5703), [#5706](https://github.com/pyg-team/pytorch_geometric/pull/5706), [#5707](https://github.com/pyg-team/pytorch_geometric/pull/5707), [#5710](https://github.com/pyg-team/pytorch_geometric/pull/5710), [#5714](https://github.com/pyg-team/pytorch_geometric/pull/5714), [#5715](https://github.com/pyg-team/pytorch_geometric/pull/5715), [#5716](https://github.com/pyg-team/pytorch_geometric/pull/5716), [#5722](https://github.com/pyg-team/pytorch_geometric/pull/5722), [#5724](https://github.com/pyg-team/pytorch_geometric/pull/5724), [#5725](https://github.com/pyg-team/pytorch_geometric/pull/5725), [#5726](https://github.com/pyg-team/pytorch_geometric/pull/5726), [#5729](https://github.com/pyg-team/pytorch_geometric/pull/5729), [#5730](https://github.com/pyg-team/pytorch_geometric/pull/5730), [#5731](https://github.com/pyg-team/pytorch_geometric/pull/5731), [#5732](https://github.com/pyg-team/pytorch_geometric/pull/5732), [#5733](https://github.com/pyg-team/pytorch_geometric/pull/5733), [#5743](https://github.com/pyg-team/pytorch_geometric/pull/5743), [#5734](https://github.com/pyg-team/pytorch_geometric/pull/5734), [#5735](https://github.com/pyg-team/pytorch_geometric/pull/5735), [#5736](https://github.com/pyg-team/pytorch_geometric/pull/5736), [#5737](https://github.com/pyg-team/pytorch_geometric/pull/5737), [#5738](https://github.com/pyg-team/pytorch_geometric/pull/5738), [#5747](https://github.com/pyg-team/pytorch_geometric/pull/5747), [#5752](https://github.com/pyg-team/pytorch_geometric/pull/5752), [#5753](https://github.com/pyg-team/pytorch_geometric/pull/5753), [#5754](https://github.com/pyg-team/pytorch_geometric/pull/5754), [#5756](https://github.com/pyg-team/pytorch_geometric/pull/5756), [#5757](https://github.com/pyg-team/pytorch_geometric/pull/5757), [#5758](https://github.com/pyg-team/pytorch_geometric/pull/5758), [#5760](https://github.com/pyg-team/pytorch_geometric/pull/5760), [#5766](https://github.com/pyg-team/pytorch_geometric/pull/5766), [#5767](https://github.com/pyg-team/pytorch_geometric/pull/5767), [#5768](https://github.com/pyg-team/pytorch_geometric/pull/5768)), [#5781](https://github.com/pyg-team/pytorch_geometric/pull/5781), [#5778](https://github.com/pyg-team/pytorch_geometric/pull/5778), [#5797](https://github.com/pyg-team/pytorch_geometric/pull/5797), [#5798](https://github.com/pyg-team/pytorch_geometric/pull/5798), [#5799](https://github.com/pyg-team/pytorch_geometric/pull/5799), [#5800](https://github.com/pyg-team/pytorch_geometric/pull/5800), [#5806](https://github.com/pyg-team/pytorch_geometric/pull/5806), [#5810](https://github.com/pyg-team/pytorch_geometric/pull/5810), [#5811](https://github.com/pyg-team/pytorch_geometric/pull/5811), [#5828](https://github.com/pyg-team/pytorch_geometric/pull/5828), [#5847](https://github.com/pyg-team/pytorch_geometric/pull/5847), [#5851](https://github.com/pyg-team/pytorch_geometric/pull/5851), [#5852](https://github.com/pyg-team/pytorch_geometric/pull/5852))
- Avoid modifying `mode_kwargs` in `MultiAggregation` ([5601](https://github.com/pyg-team/pytorch_geometric/pull/5601))
- Changed `BatchNorm` to allow for batches of size one during training ([5530](https://github.com/pyg-team/pytorch_geometric/pull/5530), [#5614](https://github.com/pyg-team/pytorch_geometric/pull/5614))
- Integrated better temporal sampling support by requiring that local neighborhoods are sorted according to time ([5516](https://github.com/pyg-team/pytorch_geometric/issues/5516), [#5602](https://github.com/pyg-team/pytorch_geometric/issues/5602))
- Fixed a bug when applying several scalers with `PNAConv` ([5514](https://github.com/pyg-team/pytorch_geometric/issues/5514))
- Allow `.` in `ParameterDict` key names ([5494](https://github.com/pyg-team/pytorch_geometric/pull/5494))
- Renamed `drop_unconnected_nodes` to `drop_unconnected_node_types` and `drop_orig_edges` to `drop_orig_edge_types` in `AddMetapaths` ([5490](https://github.com/pyg-team/pytorch_geometric/pull/5490))
- Improved `utils.scatter` performance by explicitly choosing better implementation for `add` and `mean` reduction ([5399](https://github.com/pyg-team/pytorch_geometric/pull/5399))
- Fix `to_dense_adj` with empty `edge_index` ([5476](https://github.com/pyg-team/pytorch_geometric/pull/5476))
- The `AttentionalAggregation` module can now be applied to compute attentin on a per-feature level ([5449](https://github.com/pyg-team/pytorch_geometric/pull/5449))
- Ensure equal lenghts of `num_neighbors` across edge types in `NeighborLoader` ([5444](https://github.com/pyg-team/pytorch_geometric/pull/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](https://github.com/pyg-team/pytorch_geometric/pull/5441))
- Breaking change: removed `num_neighbors` as an attribute of loader ([5404](https://github.com/pyg-team/pytorch_geometric/pull/5404))
- `ASAPooling` is now jittable ([5395](https://github.com/pyg-team/pytorch_geometric/pull/5395))
- Updated unsupervised `GraphSAGE` example to leverage `LinkNeighborLoader` ([5317](https://github.com/pyg-team/pytorch_geometric/pull/5317))
- Replace in-place operations with out-of-place ones to align with `torch.scatter_reduce` API ([5353](https://github.com/pyg-team/pytorch_geometric/pull/5353))
- Breaking bugfix: `PointTransformerConv` now correctly uses `sum` aggregation ([5332](https://github.com/pyg-team/pytorch_geometric/pull/5332))
- Improve out-of-bounds error message in `MessagePassing` ([5339](https://github.com/pyg-team/pytorch_geometric/pull/5339))
- Allow file names of a `Dataset` to be specified as either property and method ([5338](https://github.com/pyg-team/pytorch_geometric/pull/5338))
- Fixed separating a list of `SparseTensor` within `InMemoryDataset` ([5299](https://github.com/pyg-team/pytorch_geometric/pull/5299))
- Improved name resolving of normalization layers ([5277](https://github.com/pyg-team/pytorch_geometric/pull/5277))
- Fail gracefully on `GLIBC` errors within `torch-spline-conv` ([5276](https://github.com/pyg-team/pytorch_geometric/pull/5276))
- Fixed `Dataset.num_classes` in case a `transform` modifies `data.y` ([5274](https://github.com/pyg-team/pytorch_geometric/pull/5274))
- Allow customization of the activation function within `PNAConv` ([5262](https://github.com/pyg-team/pytorch_geometric/pull/5262))
- Do not fill `InMemoryDataset` cache on `dataset.num_features` ([5264](https://github.com/pyg-team/pytorch_geometric/pull/5264))
- Changed tests relying on `dblp` datasets to instead use synthetic data ([5250](https://github.com/pyg-team/pytorch_geometric/pull/5250))
- Fixed a bug for the initialization of activation function examples in `custom_graphgym` ([5243](https://github.com/pyg-team/pytorch_geometric/pull/5243))
- Allow any integer tensors when checking edge_index input to message passing ([5281](https://github.com/pyg-team/pytorch_geometric/pull/5281))

Removed

- Removed `scatter_reduce` option from experimental mode ([5399](https://github.com/pyg-team/pytorch_geometric/pull/5399))

2.1.0

Added

- Added the test for `DeepGCNLayer` ([5704](https://github.com/pyg-team/pytorch_geometric/pull/5704))
- Allow `.` in `ModuleDict` key names ([5227](https://github.com/pyg-team/pytorch_geometric/pull/5227))
- Added `edge_label_time` argument to `LinkNeighborLoader` ([5137](https://github.com/pyg-team/pytorch_geometric/pull/5137), [#5173](https://github.com/pyg-team/pytorch_geometric/pull/5173))
- Let `ImbalancedSampler` accept `torch.Tensor` as input ([5138](https://github.com/pyg-team/pytorch_geometric/pull/5138))
- Added `flow` argument to `gcn_norm` to correctly normalize the adjacency matrix in `GCNConv` ([5149](https://github.com/pyg-team/pytorch_geometric/pull/5149))
- `NeighborSampler` supports graphs without edges ([5072](https://github.com/pyg-team/pytorch_geometric/pull/5072))
- Added the `MeanSubtractionNorm` layer ([5068](https://github.com/pyg-team/pytorch_geometric/pull/5068))
- Added `pyg_lib.segment_matmul` integration within `RGCNConv` ([5052](https://github.com/pyg-team/pytorch_geometric/pull/5052), [#5096](https://github.com/pyg-team/pytorch_geometric/pull/5096))
- Support `SparseTensor` as edge label in `LightGCN` ([5046](https://github.com/pyg-team/pytorch_geometric/issues/5046))
- Added support for `BasicGNN` models within `to_hetero` ([5091](https://github.com/pyg-team/pytorch_geometric/pull/5091))
- Added support for computing weighted metapaths in `AddMetapaths` ([5049](https://github.com/pyg-team/pytorch_geometric/pull/5049))
- Added inference benchmark suite ([4915](https://github.com/pyg-team/pytorch_geometric/pull/4915))
- Added a dynamically sized batch sampler for filling a mini-batch with a variable number of samples up to a maximum size ([4972](https://github.com/pyg-team/pytorch_geometric/pull/4972))
- Added fine grained options for setting `bias` and `dropout` per layer in the `MLP` model ([4981](https://github.com/pyg-team/pytorch_geometric/pull/4981))
- Added `EdgeCNN` model ([4991](https://github.com/pyg-team/pytorch_geometric/pull/4991))
- Added scalable `inference` mode in `BasicGNN` with layer-wise neighbor loading ([4977](https://github.com/pyg-team/pytorch_geometric/pull/4977))
- Added inference benchmarks ([4892](https://github.com/pyg-team/pytorch_geometric/pull/4892), [#5107](https://github.com/pyg-team/pytorch_geometric/pull/5107))
- Added PyTorch 1.12 support ([4975](https://github.com/pyg-team/pytorch_geometric/pull/4975))
- Added `unbatch_edge_index` functionality for splitting an `edge_index` tensor according to a `batch` vector ([4903](https://github.com/pyg-team/pytorch_geometric/pull/4903))
- Added node-wise normalization mode in `LayerNorm` ([4944](https://github.com/pyg-team/pytorch_geometric/pull/4944))
- Added support for `normalization_resolver` ([4926](https://github.com/pyg-team/pytorch_geometric/pull/4926), [#4951](https://github.com/pyg-team/pytorch_geometric/pull/4951), [#4958](https://github.com/pyg-team/pytorch_geometric/pull/4958), [#4959](https://github.com/pyg-team/pytorch_geometric/pull/4959))
- Added notebook tutorial for `torch_geometric.nn.aggr` package to documentation ([4927](https://github.com/pyg-team/pytorch_geometric/pull/4927))
- Added support for `follow_batch` for lists or dictionaries of tensors ([4837](https://github.com/pyg-team/pytorch_geometric/pull/4837))
- Added `Data.validate()` and `HeteroData.validate()` functionality ([4885](https://github.com/pyg-team/pytorch_geometric/pull/4885))
- Added `LinkNeighborLoader` support to `LightningDataModule` ([4868](https://github.com/pyg-team/pytorch_geometric/pull/4868))
- Added `predict()` support to the `LightningNodeData` module ([4884](https://github.com/pyg-team/pytorch_geometric/pull/4884))
- Added `time_attr` argument to `LinkNeighborLoader` ([4877](https://github.com/pyg-team/pytorch_geometric/pull/4877), [#4908](https://github.com/pyg-team/pytorch_geometric/pull/4908))
- Added a `filter_per_worker` argument to data loaders to allow filtering of data within sub-processes ([4873](https://github.com/pyg-team/pytorch_geometric/pull/4873))
- Added a `NeighborLoader` benchmark script ([4815](https://github.com/pyg-team/pytorch_geometric/pull/4815), [#4862](https://github.com/pyg-team/pytorch_geometric/pull/4862/files))
- Added support for `FeatureStore` and `GraphStore` in `NeighborLoader` ([4817](https://github.com/pyg-team/pytorch_geometric/pull/4817), [#4851](https://github.com/pyg-team/pytorch_geometric/pull/4851), [#4854](https://github.com/pyg-team/pytorch_geometric/pull/4854), [#4856](https://github.com/pyg-team/pytorch_geometric/pull/4856), [#4857](https://github.com/pyg-team/pytorch_geometric/pull/4857), [#4882](https://github.com/pyg-team/pytorch_geometric/pull/4882), [#4883](https://github.com/pyg-team/pytorch_geometric/pull/4883), [#4929](https://github.com/pyg-team/pytorch_geometric/pull/4929), [#4992](https://github.com/pyg-team/pytorch_geometric/pull/4922), [#4962](https://github.com/pyg-team/pytorch_geometric/pull/4962), [#4968](https://github.com/pyg-team/pytorch_geometric/pull/4968), [#5037](https://github.com/pyg-team/pytorch_geometric/pull/5037), [#5088](https://github.com/pyg-team/pytorch_geometric/pull/5088), [#5270](https://github.com/pyg-team/pytorch_geometric/pull/5270), [#5307](https://github.com/pyg-team/pytorch_geometric/pull/5307), [#5318](https://github.com/pyg-team/pytorch_geometric/pull/5318))
- Added a `normalize` parameter to `dense_diff_pool` ([4847](https://github.com/pyg-team/pytorch_geometric/pull/4847))
- Added `size=None` explanation to jittable `MessagePassing` modules in the documentation ([4850](https://github.com/pyg-team/pytorch_geometric/pull/4850))
- Added documentation to the `DataLoaderIterator` class ([4838](https://github.com/pyg-team/pytorch_geometric/pull/4838))
- Added `GraphStore` support to `Data` and `HeteroData` ([4816](https://github.com/pyg-team/pytorch_geometric/pull/4816))
- Added `FeatureStore` support to `Data` and `HeteroData` ([4807](https://github.com/pyg-team/pytorch_geometric/pull/4807), [#4853](https://github.com/pyg-team/pytorch_geometric/pull/4853))
- Added `FeatureStore` and `GraphStore` abstractions ([4534](https://github.com/pyg-team/pytorch_geometric/pull/4534), [#4568](https://github.com/pyg-team/pytorch_geometric/pull/4568), [#5120](https://github.com/pyg-team/pytorch_geometric/pull/5120))
- Added support for dense aggregations in `global_*_pool` ([4827](https://github.com/pyg-team/pytorch_geometric/pull/4827))
- Added Python version requirement ([4825](https://github.com/pyg-team/pytorch_geometric/pull/4825))
- Added TorchScript support to `JumpingKnowledge` module ([4805](https://github.com/pyg-team/pytorch_geometric/pull/4805))
- Added a `max_sample` argument to `AddMetaPaths` in order to tackle very dense metapath edges ([4750](https://github.com/pyg-team/pytorch_geometric/pull/4750))
- Test `HANConv` with empty tensors ([4756](https://github.com/pyg-team/pytorch_geometric/pull/4756), [#4841](https://github.com/pyg-team/pytorch_geometric/pull/4841))
- Added the `bias` vector to the `GCN` model definition in the "Create Message Passing Networks" tutorial ([4755](https://github.com/pyg-team/pytorch_geometric/pull/4755))
- Added `transforms.RootedSubgraph` interface with two implementations: `RootedEgoNets` and `RootedRWSubgraph` ([3926](https://github.com/pyg-team/pytorch_geometric/pull/3926))
- Added `ptr` vectors for `follow_batch` attributes within `Batch.from_data_list` ([4723](https://github.com/pyg-team/pytorch_geometric/pull/4723))
- Added `torch_geometric.nn.aggr` package ([4687](https://github.com/pyg-team/pytorch_geometric/pull/4687), [#4721](https://github.com/pyg-team/pytorch_geometric/pull/4721), [#4731](https://github.com/pyg-team/pytorch_geometric/pull/4731), [#4762](https://github.com/pyg-team/pytorch_geometric/pull/4762), [#4749](https://github.com/pyg-team/pytorch_geometric/pull/4749), [#4779](https://github.com/pyg-team/pytorch_geometric/pull/4779), [#4863](https://github.com/pyg-team/pytorch_geometric/pull/4863), [#4864](https://github.com/pyg-team/pytorch_geometric/pull/4864), [#4865](https://github.com/pyg-team/pytorch_geometric/pull/4865), [#4866](https://github.com/pyg-team/pytorch_geometric/pull/4866), [#4872](https://github.com/pyg-team/pytorch_geometric/pull/4872), [#4934](https://github.com/pyg-team/pytorch_geometric/pull/4934), [#4935](https://github.com/pyg-team/pytorch_geometric/pull/4935), [#4957](https://github.com/pyg-team/pytorch_geometric/pull/4957), [#4973](https://github.com/pyg-team/pytorch_geometric/pull/4973), [#4973](https://github.com/pyg-team/pytorch_geometric/pull/4973), [#4986](https://github.com/pyg-team/pytorch_geometric/pull/4986), [#4995](https://github.com/pyg-team/pytorch_geometric/pull/4995), [#5000](https://github.com/pyg-team/pytorch_geometric/pull/5000), [#5034](https://github.com/pyg-team/pytorch_geometric/pull/5034), [#5036](https://github.com/pyg-team/pytorch_geometric/pull/5036), [#5039](https://github.com/pyg-team/pytorch_geometric/issues/5039), [#4522](https://github.com/pyg-team/pytorch_geometric/pull/4522), [#5033](https://github.com/pyg-team/pytorch_geometric/pull/5033), [#5085](https://github.com/pyg-team/pytorch_geometric/pull/5085), [#5097](https://github.com/pyg-team/pytorch_geometric/pull/5097), [#5099](https://github.com/pyg-team/pytorch_geometric/pull/5099), [#5104](https://github.com/pyg-team/pytorch_geometric/pull/5104), [#5113](https://github.com/pyg-team/pytorch_geometric/pull/5113), [#5130](https://github.com/pyg-team/pytorch_geometric/pull/5130), [#5098](https://github.com/pyg-team/pytorch_geometric/pull/5098), [#5191](https://github.com/pyg-team/pytorch_geometric/pull/5191))
- Added the `DimeNet++` model ([4432](https://github.com/pyg-team/pytorch_geometric/pull/4432), [#4699](https://github.com/pyg-team/pytorch_geometric/pull/4699), [#4700](https://github.com/pyg-team/pytorch_geometric/pull/4700), [#4800](https://github.com/pyg-team/pytorch_geometric/pull/4800))
- Added an example of using PyG with PyTorch Ignite ([4487](https://github.com/pyg-team/pytorch_geometric/pull/4487))
- Added `GroupAddRev` module with support for reducing training GPU memory ([4671](https://github.com/pyg-team/pytorch_geometric/pull/4671), [#4701](https://github.com/pyg-team/pytorch_geometric/pull/4701), [#4715](https://github.com/pyg-team/pytorch_geometric/pull/4715), [#4730](https://github.com/pyg-team/pytorch_geometric/pull/4730))
- Added benchmarks via [`wandb`](https://wandb.ai/site) ([#4656](https://github.com/pyg-team/pytorch_geometric/pull/4656), [#4672](https://github.com/pyg-team/pytorch_geometric/pull/4672), [#4676](https://github.com/pyg-team/pytorch_geometric/pull/4676))
- Added `unbatch` functionality ([4628](https://github.com/pyg-team/pytorch_geometric/pull/4628))
- Confirm that `to_hetero()` works with custom functions, _e.g._, `dropout_adj` ([4653](https://github.com/pyg-team/pytorch_geometric/pull/4653))
- Added the `MLP.plain_last=False` option ([4652](https://github.com/pyg-team/pytorch_geometric/pull/4652))
- Added a check in `HeteroConv` and `to_hetero()` to ensure that `MessagePassing.add_self_loops` is disabled ([4647](https://github.com/pyg-team/pytorch_geometric/pull/4647))
- Added `HeteroData.subgraph()`, `HeteroData.node_type_subgraph()` and `HeteroData.edge_type_subgraph()` support ([4635](https://github.com/pyg-team/pytorch_geometric/pull/4635))
- Added the `AQSOL` dataset ([4626](https://github.com/pyg-team/pytorch_geometric/pull/4626))
- Added `HeteroData.node_items()` and `HeteroData.edge_items()` functionality ([4644](https://github.com/pyg-team/pytorch_geometric/pull/4644))
- Added PyTorch Lightning support in GraphGym ([4511](https://github.com/pyg-team/pytorch_geometric/pull/4511), [#4516](https://github.com/pyg-team/pytorch_geometric/pull/4516) [#4531](https://github.com/pyg-team/pytorch_geometric/pull/4531), [#4689](https://github.com/pyg-team/pytorch_geometric/pull/4689), [#4843](https://github.com/pyg-team/pytorch_geometric/pull/4843))
- Added support for returning embeddings in `MLP` models ([4625](https://github.com/pyg-team/pytorch_geometric/pull/4625))
- Added faster initialization of `NeighborLoader` in case edge indices are already sorted (via `is_sorted=True`) ([4620](https://github.com/pyg-team/pytorch_geometric/pull/4620), [#4702](https://github.com/pyg-team/pytorch_geometric/pull/4702))
- Added `AddPositionalEncoding` transform ([4521](https://github.com/pyg-team/pytorch_geometric/pull/4521))
- Added `HeteroData.is_undirected()` support ([4604](https://github.com/pyg-team/pytorch_geometric/pull/4604))
- Added the `Genius` and `Wiki` datasets to `nn.datasets.LINKXDataset` ([4570](https://github.com/pyg-team/pytorch_geometric/pull/4570), [#4600](https://github.com/pyg-team/pytorch_geometric/pull/4600))
- Added `nn.aggr.EquilibrumAggregation` implicit global layer ([4522](https://github.com/pyg-team/pytorch_geometric/pull/4522))
- Added support for graph-level outputs in `to_hetero` ([4582](https://github.com/pyg-team/pytorch_geometric/pull/4582))
- Added `CHANGELOG.md` ([4581](https://github.com/pyg-team/pytorch_geometric/pull/4581))
- Added `HeteroData` support to the `RemoveIsolatedNodes` transform ([4479](https://github.com/pyg-team/pytorch_geometric/pull/4479))
- Added `HeteroData.num_features` functionality ([4504](https://github.com/pyg-team/pytorch_geometric/pull/4504))
- Added support for projecting features before propagation in `SAGEConv` ([4437](https://github.com/pyg-team/pytorch_geometric/pull/4437))
- Added `Geom-GCN` splits to the `Planetoid` datasets ([4442](https://github.com/pyg-team/pytorch_geometric/pull/4442))
- Added a `LinkNeighborLoader` for training scalable link predictions models [4396](https://github.com/pyg-team/pytorch_geometric/pull/4396), [#4439](https://github.com/pyg-team/pytorch_geometric/pull/4439), [#4441](https://github.com/pyg-team/pytorch_geometric/pull/4441), [#4446](https://github.com/pyg-team/pytorch_geometric/pull/4446), [#4508](https://github.com/pyg-team/pytorch_geometric/pull/4508), [#4509](https://github.com/pyg-team/pytorch_geometric/pull/4509))
- Added an unsupervised `GraphSAGE` example on `PPI` ([4416](https://github.com/pyg-team/pytorch_geometric/pull/4416))
- Added support for `LSTM` aggregation in `SAGEConv` ([4379](https://github.com/pyg-team/pytorch_geometric/pull/4379))
- Added support for floating-point labels in `RandomLinkSplit` ([4311](https://github.com/pyg-team/pytorch_geometric/pull/4311), [#4383](https://github.com/pyg-team/pytorch_geometric/pull/4383))
- Added support for `torch.data` `DataPipes` ([4302](https://github.com/pyg-team/pytorch_geometric/pull/4302), [#4345](https://github.com/pyg-team/pytorch_geometric/pull/4345), [#4349](https://github.com/pyg-team/pytorch_geometric/pull/4349))
- Added support for the `cosine` argument in the `KNNGraph`/`RadiusGraph` transforms ([4344](https://github.com/pyg-team/pytorch_geometric/pull/4344))
- Added support graph-level attributes in `networkx` conversion ([4343](https://github.com/pyg-team/pytorch_geometric/pull/4343))
- Added support for renaming node types via `HeteroData.rename` ([4329](https://github.com/pyg-team/pytorch_geometric/pull/4329))
- Added an example to load a trained PyG model in C++ ([4307](https://github.com/pyg-team/pytorch_geometric/pull/4307))
- Added a `MessagePassing.explain_message` method to customize making explanations on messages ([4278](https://github.com/pyg-team/pytorch_geometric/pull/4278), [#4448](https://github.com/pyg-team/pytorch_geometric/pull/4448)))
- Added support for `GATv2Conv` in the `nn.models.GAT` model ([4357](https://github.com/pyg-team/pytorch_geometric/pull/4357))
- Added `HeteroData.subgraph` functionality ([4243](https://github.com/pyg-team/pytorch_geometric/pull/4243))
- Added the `MaskLabel` module and a corresponding masked label propagation example ([4197](https://github.com/pyg-team/pytorch_geometric/pull/4197))
- Added temporal sampling support to `NeighborLoader` ([4025](https://github.com/pyg-team/pytorch_geometric/pull/4025))
- Added an example for unsupervised heterogeneous graph learning based on "Deep Multiplex Graph Infomax" ([3189](https://github.com/pyg-team/pytorch_geometric/pull/3189))

Changed

- Changed docstring for `RandomLinkSplit` ([5190](https://github.com/pyg-team/pytorch_geometric/issues/5190))
- Switched to PyTorch `scatter_reduce` implementation - experimental feature ([5120](https://github.com/pyg-team/pytorch_geometric/pull/5120))
- Fixed `RGATConv` device mismatches for `f-scaled` mode ([5187](https://github.com/pyg-team/pytorch_geometric/pull/5187))
- Allow for multi-dimensional `edge_labels` in `LinkNeighborLoader` ([5186](https://github.com/pyg-team/pytorch_geometric/pull/5186))
- Fixed `GINEConv` bug with non-sequential input ([5154](https://github.com/pyg-team/pytorch_geometric/pull/5154))
- Improved error message ([5095](https://github.com/pyg-team/pytorch_geometric/pull/5095))
- Fixed `HGTLoader` bug which produced outputs with missing edge types ([5067](https://github.com/pyg-team/pytorch_geometric/pull/5067))
- Fixed dynamic inheritance issue in data batching ([5051](https://github.com/pyg-team/pytorch_geometric/pull/5051))
- Fixed `load_state_dict` in `Linear` with `strict=False` mode ([5094](https://github.com/pyg-team/pytorch_geometric/pull/5094))
- Fixed typo in `MaskLabel.ratio_mask` ([5093](https://github.com/pyg-team/pytorch_geometric/pull/5093))
- Fixed `data.num_node_features` computation for sparse matrices ([5089](https://github.com/pyg-team/pytorch_geometric/pull/5089))
- Fixed `torch.fx` bug with `torch.nn.aggr` package ([5021](https://github.com/pyg-team/pytorch_geometric/pull/5021)))
- Fixed `GenConv` test ([4993](https://github.com/pyg-team/pytorch_geometric/pull/4993))
- Fixed packaging tests for Python 3.10 ([4982](https://github.com/pyg-team/pytorch_geometric/pull/4982))
- Changed `act_dict` (part of `graphgym`) to create individual instances instead of reusing the same ones everywhere ([4978](https://github.com/pyg-team/pytorch_geometric/pull/4978))
- Fixed issue where one-hot tensors were passed to `F.one_hot` ([4970](https://github.com/pyg-team/pytorch_geometric/pull/4970))
- Fixed `bool` arugments in `argparse` in `benchmark/` ([4967](https://github.com/pyg-team/pytorch_geometric/pull/4967))
- Fixed `BasicGNN` for `num_layers=1`, which now respects a desired number of `out_channels` ([4943](https://github.com/pyg-team/pytorch_geometric/pull/4943))
- `len(batch)` will now return the number of graphs inside the batch, not the number of attributes ([4931](https://github.com/pyg-team/pytorch_geometric/pull/4931))
- Fixed `data.subgraph` generation for 0-dim tensors ([4932](https://github.com/pyg-team/pytorch_geometric/pull/4932))
- Removed unnecssary inclusion of self-loops when sampling negative edges ([4880](https://github.com/pyg-team/pytorch_geometric/pull/4880))
- Fixed `InMemoryDataset` inferring wrong `len` for lists of tensors ([4837](https://github.com/pyg-team/pytorch_geometric/pull/4837))
- Fixed `Batch.separate` when using it for lists of tensors ([4837](https://github.com/pyg-team/pytorch_geometric/pull/4837))
- Correct docstring for SAGEConv ([4852](https://github.com/pyg-team/pytorch_geometric/pull/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](https://github.com/pyg-team/pytorch_geometric/pull/4828))
- Do not allow accessing edge types in `HeteroData` with two node types when there exists multiple relations between these types ([4782](https://github.com/pyg-team/pytorch_geometric/pull/4782))
- Allow `edge_type == rev_edge_type` argument in `RandomLinkSplit` ([4757](https://github.com/pyg-team/pytorch_geometric/pull/4757), [#5221](https://github.com/pyg-team/pytorch_geometric/pull/5221))
- Fixed a numerical instability in the `GeneralConv` and `neighbor_sample` tests ([4754](https://github.com/pyg-team/pytorch_geometric/pull/4754))
- Fixed a bug in `HANConv` in which destination node features rather than source node features were propagated ([4753](https://github.com/pyg-team/pytorch_geometric/pull/4753))
- Fixed versions of `checkout` and `setup-python` in CI ([4751](https://github.com/pyg-team/pytorch_geometric/pull/4751))
- Fixed `protobuf` version ([4719](https://github.com/pyg-team/pytorch_geometric/pull/4719))
- Fixed the ranking protocol bug in the RGCN link prediction example ([4688](https://github.com/pyg-team/pytorch_geometric/pull/4688))
- Math support in Markdown ([4683](https://github.com/pyg-team/pytorch_geometric/pull/4683))
- Allow for `setter` properties in `Data` ([4682](https://github.com/pyg-team/pytorch_geometric/pull/4682), [#4686](https://github.com/pyg-team/pytorch_geometric/pull/4686))
- Allow for optional `edge_weight` in `GCN2Conv` ([4670](https://github.com/pyg-team/pytorch_geometric/pull/4670))
- Fixed the interplay between `TUDataset` and `pre_transform` that modify node features ([4669](https://github.com/pyg-team/pytorch_geometric/pull/4669))
- Make use of the `pyg_sphinx_theme` documentation template ([4664](https://github.com/pyg-team/pyg-lib/pull/4664), [#4667](https://github.com/pyg-team/pyg-lib/pull/4667))
- Refactored reading molecular positions from sdf file for qm9 datasets ([4654](https://github.com/pyg-team/pytorch_geometric/pull/4654))
- Fixed `MLP.jittable()` bug in case `return_emb=True` ([4645](https://github.com/pyg-team/pytorch_geometric/pull/4645), [#4648](https://github.com/pyg-team/pytorch_geometric/pull/4648))
- The generated node features of `StochasticBlockModelDataset` are now ordered with respect to their labels ([4617](https://github.com/pyg-team/pytorch_geometric/pull/4617))
- Fixed typos in the documentation ([4616](https://github.com/pyg-team/pytorch_geometric/pull/4616), [#4824](https://github.com/pyg-team/pytorch_geometric/pull/4824), [#4895](https://github.com/pyg-team/pytorch_geometric/pull/4895), [#5161](https://github.com/pyg-team/pytorch_geometric/pull/5161))
- The `bias` argument in `TAGConv` is now actually applied ([4597](https://github.com/pyg-team/pytorch_geometric/pull/4597))
- Fixed subclass behavior of `process` and `download` in `Datsaet` ([4586](https://github.com/pyg-team/pytorch_geometric/pull/4586))
- Fixed filtering of attributes for loaders in case `__cat_dim__ != 0` ([4629](https://github.com/pyg-team/pytorch_geometric/pull/4629))
- Fixed `SparseTensor` support in `NeighborLoader` ([4320](https://github.com/pyg-team/pytorch_geometric/pull/4320))
- Fixed average degree handling in `PNAConv` ([4312](https://github.com/pyg-team/pytorch_geometric/pull/4312))
- Fixed a bug in `from_networkx` in case some attributes are PyTorch tensors ([4486](https://github.com/pyg-team/pytorch_geometric/pull/4486))
- Added a missing clamp in `DimeNet` ([4506](https://github.com/pyg-team/pytorch_geometric/pull/4506), [#4562](https://github.com/pyg-team/pytorch_geometric/pull/4562))
- Fixed the download link in `DBP15K` ([4428](https://github.com/pyg-team/pytorch_geometric/pull/4428))
- Fixed an autograd bug in `DimeNet` when resetting parameters ([4424](https://github.com/pyg-team/pytorch_geometric/pull/4424))
- Fixed bipartite message passing in case `flow="target_to_source"` ([4418](https://github.com/pyg-team/pytorch_geometric/pull/4418))
- Fixed a bug in which `num_nodes` was not properly updated in the `FixedPoints` transform ([4394](https://github.com/pyg-team/pytorch_geometric/pull/4394))
- PyTorch Lightning >= 1.6 support ([4377](https://github.com/pyg-team/pytorch_geometric/pull/4377))
- Fixed a bug in which `GATConv` was not jittable ([4347](https://github.com/pyg-team/pytorch_geometric/pull/4347))
- Fixed a bug in which the GraphGym config was not stored in each specific experiment directory ([4338](https://github.com/pyg-team/pytorch_geometric/pull/4338))
- Fixed a bug in which `nn.models.GAT` did not produce `out_channels`-many output channels ([4299](https://github.com/pyg-team/pytorch_geometric/pull/4299))
- Fixed mini-batching with empty lists as attributes ([4293](https://github.com/pyg-team/pytorch_geometric/pull/4293))
- Fixed a bug in which `GCNConv` could not be combined with `to_hetero` on heterogeneous graphs with one node type ([4279](https://github.com/pyg-team/pytorch_geometric/pull/4279))

Removed

- Remove internal metrics in favor of `torchmetrics` ([4287](https://github.com/pyg-team/pytorch_geometric/pull/4287))

Links

Releases

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.