Skip to content

Latest commit

 

History

History
527 lines (498 loc) · 83 KB

CHANGELOG.md

File metadata and controls

527 lines (498 loc) · 83 KB

Changelog

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

[2.4.0] - 2023-MM-DD

Added

  • Added the disable_dynamic_shape experimental flag (#7246)
  • Added the option to override use_segmm selection in HeteroLinear (#7474)
  • Added the MovieLens-1M heterogeneous dataset (#7479)
  • Added a CPU-based and GPU-based map_index implementation (#7493)
  • Added the AmazonBook heterogeneous dataset (#7483)
  • Added hierarichial heterogeneous GraphSAGE example on OGB-MAG (#7425)
  • Added the torch_geometric.distributed package (#7451, #7452)
  • Added the GDELTLite dataset (#7442)
  • Added the approx_knn function for approximated nearest neighbor search (#7421)
  • Added the IGMCDataset (#7441)
  • Added a sparse cross_entropy implementation (#7447, #7466)
  • Added the MovieLens-100K heterogeneous dataset (#7398)
  • Added the PMLP model (#7370)
  • Added padding capabilities to HeteroData.to_homogeneous() in case feature dimensionalities do not match (#7374)
  • Added an optional batch_size argument to fps, knn, knn_graph, radius and radius_graph (#7368)
  • Added PrefetchLoader capabilities (#7376, #7378, #7383)
  • Added an example for hierarichial sampling (#7244)
  • Added Kùzu remote backend examples (#7298)
  • Fixed tracing of add_self_loops for a dynamic number of nodes (#7330)
  • Added an optional add_pad_mask argument to the Pad transform (#7339)
  • Added keep_inter_cluster_edges option to ClusterData to support inter-subgraph edge connections when doing graph partitioning (#7326)
  • Unify graph pooling framework (#7308)
  • Added support for tuples as keys in ModuleDict/ParameterDict (#7294)
  • Added NodePropertySplit transform for creating node-level splits using structural node properties (#6894)
  • Added an option to preserve directed graphs in CitationFull datasets (#7275)
  • Added support for torch.sparse.Tensor in DataLoader (#7252)
  • Added save and load methods to InMemoryDataset (#7250, #7413)
  • Added an example for heterogeneous GNN explanation via CaptumExplainer (#7096)
  • Added visualize_feature_importance functionality to HeteroExplanation (#7096)
  • Added a AddRemainingSelfLoops transform (#7192)
  • Added optimizer_resolver (#7209)
  • Added type_ptr argument to HeteroLayerNorm (#7208)
  • Added an option to benchmark scripts to write PyTorch profiler results to CSV (#7114)
  • Added subgraph type sampling option with bidirectional edge support (#7199, #7200)
  • Added support for "any"-reductions in scatter (#7198)
  • Added manual sampling interface to NodeLoader and LinkLoader (#7197)
  • Extending torch.sparse support (#7155)
  • Added edge weight support to LightGCN (#7157)
  • Added SparseTensor support totrim_to_layer function (#7089)
  • Added instructions for ROCm build wheels (#7143)
  • Added a ComposeFilters class to compose pre_filter functions in Dataset (#7097)
  • Added a time-step aware variant of the EllipticBitcoinDataset called EllipticBitcoinTemporalDataset (#7011)
  • Added to_dgl and from_dgl conversion functions (#7053)
  • Added support for torch.jit.script within MessagePassing layers without torch_sparse being installed (#7061, #7062)
  • Added unbatching logic for torch.sparse tensors (#7037)
  • Added the RotatE KGE model (#7026)

Changed

  • Move the scaler tensor in GeneralConv to the correct device (#7484)
  • Fixed HeteroLinear bug when used via mixed precision (#7473)
  • All transforms are now immutable, i.e., they perform a shallow-copy of the data and therefore do not longer modify data in-place (#7429)
  • Set output_size in the repeat_interleave operation in QuantileAggregation (#7426)
  • Fixed gradient computation of edge weights in utils.spmm (#7428)
  • Re-factored ClusterLoader to integrate pyg-lib METIS routine (#7416)
  • Fixed an index-out-of-range bug in QuantileAggregation when dim_size is passed (#7407)
  • The filter_per_worker option will not get automatically inferred by default based on the device of the underlying data (#7399)
  • Fixed a bug in LightGCN.recommendation_loss() to only use the embeddings of the nodes involved in the current mini-batch (#7384)
  • Added an optional max_num_elements argument to SortAggregation (#7367)
  • Added the option to pass fill_value as a torch.tensor to utils.to_dense_batch (#7367)
  • Fixed a bug in which inputs where modified in-place in to_hetero_with_bases (#7363)
  • Do not load node_default and edge_default attributes in from_networkx (#7348)
  • Updated examples to use NeighborLoader instead of NeighborSampler (#7152)
  • Fixed HGTConv utility function _construct_src_node_feat (#7194)
  • Extend dataset summary to create stats for each node/edge type (#7203)
  • Added an optional batch_size argument to avg_pool_x and max_pool_x (#7216)
  • Fixed subgraph on unordered inputs (#7187)
  • Allow missing node types in HeteroDictLinear (#7185)
  • Optimized from_networkx memory footprint by reducing unnecessary copies (#7119)
  • Added an optional batch_size argument to LayerNorm, GraphNorm, InstanceNorm, GraphSizeNorm and PairNorm (#7135)
  • Improved code coverage (#7093, #7195)
  • Fix numpy incompatiblity when reading files for Planetoid datasets (#7141)
  • Added support for Data.num_edges for native torch.sparse.Tensor adjacency matrices (#7104)
  • Fixed crash of heterogeneous data loaders if node or edge types are missing (#7060, #7087)
  • Accelerated attention-based MultiAggregation (#7077)
  • Edges in HeterophilousGraphDataset are now undirected by default (#7065)
  • Fixed a bug in FastHGTConv that computed values via parameters used to compute the keys (#7050)
  • Accelerated sparse tensor conversion routines (#7042, #7043)
  • Change torch_sparse.SparseTensor logic to utilize torch.sparse_csr instead (#7041)
  • Added an optional batch_size and max_num_nodes arguments to MemPooling layer (#7239)
  • Fixed training issues of the GraphGPS example (#7377)
  • Allowed CaptumExplainer to be called multiple times in a row (#7391)

Removed

  • Removed layer_type argument in contrib.explain.GraphMaskExplainer (#7445)
  • Replaced FastHGTConv with HGTConv (#7117)

[2.3.0] - 2023-03-23

Added

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

Changed

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

Removed

  • torch-sparse is now an optional dependency (#6625, #6626, #6627, #6628, #6629, #6630)
  • Removed most of the torch-scatter dependencies (#6394, #6395, #6399, #6400, #6615, #6617)
  • Removed the deprecated classes GNNExplainer and Explainer from nn.models (#6382)
  • Removed target_index argument in the Explainer interface (#6270)
  • Removed Aggregation.set_validate_args option (#6175)

[2.2.0] - 2022-12-01

Added

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

Changed

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

Removed

  • Removed scatter_reduce option from experimental mode (#5399)

[2.1.0] - 2022-08-17

Added

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

Changed

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

Removed

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