All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
- Added PyTorch 2.6 support (#10170)
- Added support for heterogenous graphs in
PGExplainer(#10168) - Added support for heterogenous graphs in
GNNExplainer(#10158) - Added Graph Positional and Structural Encoder (GPSE) (#9018)
- Added attract-repel link prediction example (#10107)
- Added
ARLinkPredictorfor implementing Attract-Repel embeddings for link prediction (#10105) - Improving documentation for cuGraph (#10083)
- Added
HashTensor(#10072) - Added
SGFormermodel and example (#9904) - Added
AveragePopularitymetric for link prediction (#10022) - Added
Personalizationmetric for link prediction (#10015) - Added
HitRatiometric for link prediction (#10013) - Added Data Splitting Tutorial (#8366)
- Added
Diversitymetric for link prediction (#10009) - Added
Coveragemetric for link prediction (#10006) - Added Graph Transformer Tutorial (#8144)
- Consolidate Cugraph examples into
ogbn_train_cugraph.pyandogbn_train_cugraph_multigpu.pyforogbn-arxiv,ogbn-productsandogbn-papers100M(#9953) - Added
InstructMoldataset (#9975) - Added support for weighted
LinkPredRecallmetric (#9947) - Added support for weighted
LinkPredNDCGmetric (#9945) - Added
LinkPredMetricCollection(#9941) - Added various
GRetrieverarchitecture benchmarking examples (#9666) - Added
profiler.nvtxitwith some examples (#9666) - Added
loader.RagQueryLoaderwith Remote Backend Example (#9666) - Added
data.LargeGraphIndexer(#9666) - Added
GIT-Mol(#9730) - Added comment in
g_retriever.pypointing toNeo4jGraph DB integration demo (#9748) - Added
MoleculeGPTexample (#9710) - Added
nn.models.GLEM(#9662) - Added
TAGDataset(#9662) - Added support for fast
Delaunay()triangulation via thetorch_delaunaypackage (#9748) - Added PyTorch 2.5 support (#9779, #9779)
- Support 3D tetrahedral mesh elements of shape
[4, num_faces]in theFaceToEdgetransformation (#9776) - Added the
use_pcstoption toWebQSPDataset(#9722) - Allowed users to pass
edge_weighttoGraphUNetmodels (#9737) - Consolidated
examples/ogbn_{papers_100m,products_gat,products_sage}.pyintoexamples/ogbn_train.py(#9467) - Add ComplexWebQuestions (CWQ) dataset (#9950)
- Updated cuGraph examples to use buffered sampling which keeps data in memory and is significantly faster than the deprecated buffered sampling (#10079)
- Updated Dockerfile to use latest from NVIDIA (#9794)
- Dropped Python 3.8 support (#9696)
- Added a check that confirms that custom edge types of
NumNeighborsactually exist in the graph (#9807) - Automatic num_params in LLM + update
GRetrieverdefault llm (#9938)
- Fixed
_recursive_config()fortorch.nn.ModuleListandtorch.nn.ModuleDict(#10124, #10129) - Fixed the
k_hop_subgraph()method for directed graphs (#9756) - Fixed
utils.group_catconcatenating dimension (#9766) - Fixed
WebQSDataset.processraising exceptions (#9665) - Fixed
is_node_attr()andis_edge_attr()errors whencat_dimis a tuple (#9895)
- Added the
WebQSPDatasetdataset (#9481) - Added the
GRetrievermodel and an example (#9480, #9167) - Added the
ClusterPoolinglayer (#9627) - Added the
LinkPredMRRmetric (#9632) - Added PyTorch 2.4 support (#9594)
- Added
utils.normalize_edge_indexfor symmetric/asymmetric normalization of graph edges (#9554) - Added the
RemoveSelfLoopstransformation (#9562) - Added ONNX export for
scatterwith min/max reductions (#9587) - Added a
residualoption inGATConvandGATv2Conv(#9515) - Added the
PatchTransformerAggregationlayer (#9487) - Added the
nn.nlp.LLMmodel (#9462) - Added an example of training GNNs for a graph-level regression task (#9070)
- Added
utils.from_rdmol/utils.to_rdmolfunctionality (#9452) - Added the
OPFDataset(#9379) - Added the heterogeneous
HeteroJumpingKnowledgemodule (#9380) - Started work on GNN+LLM package (#9350)
- Added support for negative sampling in
LinkLoaderacccording to source and destination node weights (#9316) - Added support for
EdgeIndex.unbind(#9298) - Integrate
torch_geometric.Indexintotorch_geometric.EdgeIndex(#9296) - Support
EdgeIndex.sparse_narrowfor non-sorted edge indices (#9291) - Added
torch_geometric.Index(#9276, #9277, #9278, #9279, #9280, #9281, #9284, #9285, #9286, #9287, #9288, #9289, #9297) - Added support for PyTorch 2.3 (#9240)
- Added support for
EdgeIndexinmessage_and_aggregate(#9131) - Added
CornellTemporalHyperGraphDataset(#9090) - Added support for cuGraph data loading and
GATin single node Papers100m examples (#8173) - Added the
VariancePreservingAggregation(VPA) (#9075) - Added option to pass custom
from_smilesfunctionality toPCQM4Mv2andMoleculeNet(#9073) - Added
group_catfunctionality (#9029) - Added support for
EdgeIndexinspmm(#9026) - Added option to pre-allocate memory in GPU-based
ApproxKNN(#9046) - Added support for
EdgeIndexinMessagePassing(#9007) - Added support for
torch.compilein combination withEdgeIndex(#9007) - Added a
ogbn-mag240mexample (#8249) - Added
EdgeIndex.sparse_resize_functionality (#8983) - Added approximate
faiss-based KNN-search (#8952) - Added documentation on environment setup on XPU device (#9407)
- Add args to Taobao multi-GPU example and move item-item compute to dataset (#9550)
- Use
torch.load(weights_only=True)by default (#9618) - Adapt
cugraphexamples to its new API (#9541) - Allow optional but untyped tensors in
MessagePassing(#9494) - Added support for modifying
filenameof the stored partitioned file inClusterLoader(#9448) - Support other than two-dimensional inputs in
AttentionalAggregation(#9433) - Improved model performance of the
examples/ogbn_papers_100m.pyscript (#9386, #9445) - Added the
fmtarg toDataset.get_summary(#9408) - Skipped zero atom molecules in
MoleculeNet(#9318) - Ensure proper parallelism in
OnDiskDatasetfor multi-threadedgetcalls (#9140) - Allow
Noneoutputs inFeatureStore.get_tensor()-KeyErrorshould now be raised based on the implementation inFeatureStore._get_tensor()(#9102) - Allow mini-batching of uncoalesced sparse matrices (#9099)
- Improvements to multi-node
ogbn-papers100mdefault hyperparameters and adding evaluation on all ranks (#8823) - Changed distributed sampler and loader tests to correctly report failures in subprocesses to
pytest(#8978) - Remove filtering of node/edge types in
trim_to_layerfunctionality (#9021) - Default to
scatteroperations inMessagePassingin casetorch.use_deterministic_algorithmsis not set (#9009) - Made
MessagePassinginterface thread-safe (#9001) - Breaking Change: Added support for
EdgeIndexincugraphGNN layers (#8938) - Added the
dimarg totorch.crosscalls (#8918) - Added XPU support to basic GNN examples (#9421, #9439)
- Fixed
VirtualNodetransform for empty edge indices (#9605) - Fixed an issue where import order in the multi-GPU
cugraphexample could cause anrmmerror (#9577) - Made the output of the single-GPU
cugraphexample more readable (#9577) - Fixed
load_state_dictbehavior with lazy parameters inHeteroDictLinear(#9493) Sequentialcan now be properly pickled (#9369)- Fixed
pickle.loadfor jittableMessagePassingmodules (#9368) - Fixed batching of sparse tensors saved via
data.edge_index(#9317) - Fixed arbitrary keyword ordering in
MessagePassing.propgate(#9245) - Fixed node mapping bug in
RCDDdataset (#9234) - Fixed incorrect treatment of
edge_labelandedge_label_indexinToSparseTensortransform (#9199) - Fixed
EgoDataprocessing inSnapDatasetin case filenames are unsorted (#9195) - Fixed empty graph and isolated node handling in
to_dgl(#9188) - Fixed bug in
to_scipy_sparse_matrixwhen cuda is set as default torch device (#9146) - Fixed
MetaPath2Vecin case the last node is isolated (#9145) - Ensure backward compatibility in
MessagePassingviatorch.load(#9105) - Prevent model compilation on custom
propagatefunctions (#9079) - Ignore
self.propagateappearances in comments when parsingMessagePassingimplementation (#9044) - Fixed
OSErroron read-only file systems withinMessagePassing(#9032) - Fixed metaclass conflict in
Dataset(#8999) - Fixed import errors on
MessagePassingmodules with nested inheritance (#8973) - Fixed bug in multi XPU training (#9456)
- Fixed TorchScript compilation error for
MessagePassing._check_inputon older torch versions (#9564)
- Added an example for recommender systems, including k-NN search and retrieval metrics (#8546)
- Added multi-GPU evaluation in distributed sampling example (#8880)
- Added end-to-end example for distributed CPU training (#8713)
- Added PyTorch 2.2 support (#8857)
- Added fallback code path for
segmentin casetorch-scatteris not installed (#8852) - Added support for custom node labels in
visualize_graph()(#8816) - Added support for graph partitioning for temporal data in
torch_geometric.distributed(#8718, #8815, #8874) - Added
TreeGraphandGridMotifgenerators (#8736) - Added two examples for edge-level temporal sampling on a heterogenous graph, with and without distributed training (#8383, #8820)
- Added the
num_graphsoption to theStochasticBlockModelDataset(#8648) - Added noise scheduler utility for diffusion based graph generative models (#8347)
- Added the equivariant
ViSNetmodel (#8287) - Added temporal-related capabilities to
Data(#8454) - Added support for returning multi graphs in
to_networkx(#8575) - Added support for XPU device in
profileitdecorator (#8532) - Added
KNNIndexexclusion logic (#8573) - Added warning when calling
dataset.num_classeson regression problems (#8550) - Added relabel node functionality to
dropout_node(#8524) - Added support for type checking via
mypy(#8254) - Added support for link-prediction retrieval metrics (#8499, #8326, #8566, #8647)
- Added METIS partitioning with CSC/CSR format selection in
ClusterData(#8438) - Added
is_torch_instanceto check against the original class of compiled models (#8461) - Added dense computation for
AddRandomWalkPE(#8431) - Added a tutorial for point cloud processing (#8015)
- Added
fsspecas file system backend (#8379, #8426, #8434, #8474) - Added support for floating-point average degree numbers in
FakeDatasetandFakeHeteroDataset(#8404) - Added support for device conversions of
InMemoryDataset(#8402) - Added support for edge-level temporal sampling in
NeighborLoaderandLinkNeighborLoader(#8372, #8428) - Added support for
torch.compileinModuleDictandParameterDict(#8363) - Added
force_reloadoption toDatasetandInMemoryDatasetto reload datasets (#8352, #8357, #8436) - Added support for
torch.compileinMultiAggregation(#8345) - Added support for
torch.compileinHeteroConv(#8344) - Added support for weighted
sparse_cross_entropy(#8340) - Added a multi GPU training benchmarks for CUDA and XPU devices (#8288, #8382, #8386)
- Support MRR computation in
KGEModel.test()(#8298) - Added an example for model parallelism (
examples/multi_gpu/model_parallel.py) (#8309) - Added a tutorial for multi-node multi-GPU training with pure PyTorch (#8071)
- Added a multinode-multigpu example on
ogbn-papers100M(#8070) - Added support for
to_hetero_with_baseson static graphs (#8247) - Added the
RCDDdataset (#8196) - Added distributed
GAT + ogbn-productsexample targeting XPU device (#8032) - Added the option to skip explanations of certain message passing layers via
conv.explain = False(#8216)
- Changed the default inference mode for
use_segment_matmulbased on benchmarking (from a heuristic-based version) (#8615) - Return an empty tensor from
utils.group_argsortif its input tensor is empty (#8752) - GNN layers are now jittable by default (#8745)
- Sparse node features in
NELLandAttributedGraphDatasetare now represented astorch.sparse_csr_tensorinstead oftorch_sparse.SparseTensor(#8679) - Accelerated mini-batching of
torch.sparsetensors (#8670) - Fixed RPC timeout due to worker closing in
DistLoaderwithatexitnot executed correctly inworker_init_fn(#8605) ExplainerDatasetwill now contain node labels for any motif generator (#8519)- Made
utils.softmaxfaster viasoftmax_csr(#8399) - Made
utils.mask.mask_selectfaster (#8369) - Update
DistNeighborSampler(#8209, #8367, #8375, (#8624, #8722) - Update
GraphStoreandFeatureStoreto support distributed training (#8083) - Disallow the usage of
add_self_loops=TrueinGCNConv(normalize=False)(#8210) - Disable device asserts during
torch_geometric.compile(#8220)
- Deprecated
MessagePassing.jittable(#8781) - Deprecated the usage of
torch_geometric.compile; Usetorch.compileinstead (#8780) - Deprecated the
typingargument inMessagePassing.jittable()(#8731) - Deprecated
torch_geometric.data.makedirsin favor ofos.makedirs(#8421) - Deprecated
DataParallelin favor ofDistributedDataParallel(#8250)
- Fixed dummy value creation of boolean tensors in
to_homogeneous()(#8858) - Fixed Google Drive download issues (#8804)
- Fixed a bug in which
InMemoryDatasetdid not reconstruct the correct data class when apre_transformhas modified it (#8692) - Fixed a bug in which transforms were not applied for
OnDiskDataset(#8663) - Fixed mini-batch computation in
DMoNPooingloss function (#8285) - Fixed
NaNhandling inSQLDatabase(#8479) - Fixed
CaptumExplainerin case noindexis passed (#8440) - Fixed
edge_indexconstruction in theUPFDdataset (#8413) - Fixed TorchScript support in
AttentionalAggregationandDeepSetsAggregation(#8406) - Fixed
GraphMaskExplainerfor GNNs with more than two layers (#8401) - Breaking Change: Properly initialize modules in
GATConvdepending on whether the input is bipartite or non-bipartite (#8397) - Fixed
input_idcomputation inNeighborLoaderin case amaskis given (#8312) - Respect current device when deep-copying
Linearlayers (#8311) - Fixed
Data.subgraph()/HeteroData.subgraph()in caseedge_indexis not defined (#8277) - Fixed empty edge handling in
MetaPath2Vec(#8248) - Fixed
AttentionExplainerusage withinAttentiveFP(#8244) - Fixed
load_from_state_dictin lazyLinearmodules (#8242) - Fixed pre-trained
DimeNet++performance onQM9(#8239) - Fixed
GNNExplainerusage withinAttentiveFP(#8216) - Fixed
to_networkx(to_undirected=True)in case the input graph is not undirected (#8204) - Fixed sparse-sparse matrix multiplication support on Windows in
TwoHopandAddRandomWalkPEtransformations (#8197, #8225) - Fixed batching of
HeteroDataconverted usingToSparseTensor()whentorch_sparseis not installed (#8356)
- Removed disabling of extension packages during
torch_geometric.compile(#8698)
- Add the
ogcmethod as example (#8168) - Added a tutorial on
NeighborLoader(#7931) - Added the option to override usage of
segment_matmul/grouped_matmulvia thetorch_geometric.backend.use_segment_matmulflag (#8148) - Added support for PyTorch 2.1.0 (#8134)
- Added the
NeuroGraphDatasetbenchmark collection (#8122) - Added support for a node-level
masktensor indense_to_sparse(#8117) - Added the
to_on_disk_dataset()method to convertInMemoryDatasetinstances toOnDiskDatasetinstances (#8116) - Added
torch-framesupport (#8110, #8118, #8151, #8152) - Added the
DistLoaderbase class (#8079) - Added
HyperGraphDatato support hypergraphs (#7611) - Added the
PCQM4Mv2dataset as a reference implementation forOnDiskDataset(#8102) - Added
module_headersproperty tonn.Sequentialmodels (#8093) - Added
OnDiskDatasetinterface with data loader support (#8066, #8088, #8092, #8106) - Added a tutorial for
Node2VecandMetaPath2Vecusage (#7938) - Added a tutorial for multi-GPU training with pure PyTorch (#7894)
- Added
edge_attrsupport toResGatedGraphConv(#8048) - Added a
Databaseinterface andSQLiteDatabase/RocksDatabaseimplementations (#8028, #8044, #8046, #8051, #8052, #8054, #8057, #8058) - Added support for weighted/biased sampling in
NeighborLoader/LinkNeighborLoader(#8038) - Added the
MixHopConvlayer and an corresponding example (#8025) - Added the option to pass keyword arguments to the underlying normalization layers within
BasicGNNandMLP(#8024, #8033) - Added
IBMBNodeLoaderandIBMBBatchLoaderdata loaders (#6230) - Added the
NeuralFingerprintmodel for learning fingerprints of molecules (#7919) - Added
SparseTensorsupport toWLConvContinuous,GeneralConv,PDNConvandARMAConv(#8013) - Added
LCMAggregation, an implementation of Learnable Communitive Monoids, along with an example (#7976, #8020, #8023, #8026, #8075) - Added a warning for isolated/non-existing node types in
HeteroData.validate()(#7995) - Added
utils.cumsumimplementation (#7994) - Added the
BrcaTcgadataset (#7905) - Added the
MyketDataset(#7959) - Added a multi-GPU
ogbn-papers100Mexample (#7921) - Added
group_argsortimplementation (#7948) - Added
CachedLoaderimplementation (#7896, #7897) - Added possibility to run training benchmarks on XPU device (#7925)
- Added
utils.pprfor personalized PageRank computation (#7917) - Added support for XPU device in
PrefetchLoader(#7918) - Added support for floating-point slicing in
Dataset, e.g.,dataset[:0.9](#7915) - Added nightly GPU tests (#7895)
- Added the
HalfHopgraph upsampling augmentation (#7827) - Added the
Wikidata5Mdataset (#7864) - Added TorchScript support inside
BasicGNNmodels (#7865) - Added a
batch_sizeargument tounbatchfunctionalities (#7851) - Added a distributed example using
graphlearn-for-pytorch(#7402) - Integrate
neg_sampling_ratiointoTemporalDataLoader(#7644) - Added
faiss-basedKNNINdexclasses for L2 or maximum inner product search (#7842) - Added the
OSE_GVCSdataset (#7811) - Added
output_initializerargument toDimeNetmodels (#7774, #7780) - Added
lexsortimplementation (#7775) - Added possibility to run inference benchmarks on XPU device (#7705)
- Added
HeteroDatasupport into_networkx(#7713) - Added
FlopsCountsupport viafvcore(#7693) - Added back support for PyTorch >= 1.11.0 (#7656)
- Added
Data.sort()andHeteroData.sort()functionalities (#7649) - Added
torch.nested_tensorsupport inDataandBatch(#7643, #7647) - Added
intervalargument toCartesian,LocalCartesianandDistancetransformations (#7533, #7614, #7700) - Added a
LightGCNexample on theAmazonBookdataset (7603) - Added a tutorial on hierarchical neighborhood sampling (#7594)
- Enabled different attention modes in
HypergraphConvvia theattention_modeargument (#7601) - Added the
FilterEdgesgraph coarsening operator (#7361) - Added the
DirGNNmodel for learning on directed graphs (#7458) - Allow GPU tensors as input to
NodeLoaderandLinkLoader(#7572) - Added an
embedding_deviceoption to allow for GPU inference inBasicGNN(#7548, #7829) - Added
PerformertoGPSConvand removeattn_dropoutargument fromGPSConv(#7465) - Enabled
LinkNeighborLoaderto return number of sampled nodes and edges per hop (#7516) - Added the
HMpersonalized fashion recommendation dataset (#7515) - Added the
GraphMixermodel (#7501, #7459) - Added the
disable_dynamic_shapeexperimental flag (#7246, #7534) - Added the
MovieLens-1Mheterogeneous dataset (#7479) - Added a CPU-based and GPU-based
map_indeximplementation (#7493, #7764 #7765) - Added the
AmazonBookheterogeneous dataset (#7483) - Added hierarchical heterogeneous GraphSAGE example on OGB-MAG (#7425)
- Added the
torch_geometric.distributedpackage (#7451, #7452), #7482, #7502, #7628, #7671, #7846, #7715, #7974) - Added the
GDELTLitedataset (#7442) - Added the
approx_knnfunction for approximated nearest neighbor search (#7421) - Added the
IGMCDataset(#7441) - Added a sparse
cross_entropyimplementation (#7447, #7466) - Added the
MovieLens-100Kheterogeneous dataset (#7398) - Added the
PMLPmodel and an example (#7370, #7543) - Added padding capabilities to
HeteroData.to_homogeneous()in case feature dimensionalities do not match (#7374) - Added an optional
batch_sizeargument tofps,knn,knn_graph,radiusandradius_graph(#7368) - Added
PrefetchLoadercapabilities (#7376, #7378, #7383) - Added an example for hierarchical sampling (#7244)
- Added Kùzu remote backend examples (#7298)
- Added an optional
add_pad_maskargument to thePadtransform (#7339) - Added
keep_inter_cluster_edgesoption toClusterDatato support inter-subgraph edge connections when doing graph partitioning (#7326) - Unify graph pooling framework (#7308, #7625)
- Added support for tuples as keys in
ModuleDict/ParameterDict(#7294) - Added
NodePropertySplittransform for creating node-level splits using structural node properties (#6894) - Added an option to preserve directed graphs in
CitationFulldatasets (#7275) - Added support for
torch.sparse.TensorinDataLoader(#7252) - Added
saveandloadmethods toInMemoryDataset(#7250, #7413) - Added an example for heterogeneous GNN explanation via
CaptumExplainer(#7096) - Added
visualize_feature_importancefunctionality toHeteroExplanation(#7096) - Added a
AddRemainingSelfLoopstransform (#7192) - Added
optimizer_resolver(#7209) - Added
type_ptrargument toHeteroLayerNorm(#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 inscatter(#7198) - Added manual sampling interface to
NodeLoaderandLinkLoader(#7197) - Extending
torch.sparsesupport (#7155) - Added edge weight support to
LightGCN(#7157) - Added
SparseTensorsupport totrim_to_layerfunction (#7089) - Added instructions for ROCm build wheels (#7143)
- Added a
ComposeFiltersclass to composepre_filterfunctions inDataset(#7097) - Added a time-step aware variant of the
EllipticBitcoinDatasetcalledEllipticBitcoinTemporalDataset(#7011) - Added
to_dglandfrom_dglconversion functions (#7053) - Added support for
torch.jit.scriptwithinMessagePassinglayers withouttorch_sparsebeing installed (#7061, #7062) - Added unbatching logic for
torch.sparsetensors (#7037) - Added the
RotatEKGE model (#7026) - Added support for Apple silicon GPU acceleration in some main examples (#7770, #7711, #7784, #7785)
- Fixed
HeteroConvfor layers that have a non-default argument order, e.g.,GCN2Conv(#8166) - Handle reserved keywords as keys in
ModuleDictandParameterDict(#8163) - Updated the examples and tutorials to account for
torch.compile(dynamic=True)in PyTorch 2.1.0 (#8145) - Enabled dense eigenvalue computation in
AddLaplacianEigenvectorPEfor small-scale graphs (#8143) - Fix
DynamicBatchSampler.__len__to raise an error in casenum_stepsis undefined (#8137) - Enabled pickling of
DimeNetmodels (#8019) - Changed the
trim_to_layerfunction to filter out non-reachable node and edge types when operating on heterogeneous graphs (#7942) - Accelerated and simplified
top_kcomputation inTopKPooling(#7737) - Updated
GINimplementation in kernel benchmarks to have sequential batchnorms (#7955) - Fixed bugs in benchmarks caused by a lack of the device conditions for CPU and unexpected
cacheargument in heterogeneous models (#7956 - Fixed a bug in which
batch.e_idwas not correctly computed on unsorted graph inputs (#7953) - Fixed
from_networkxconversion fromnx.stochastic_block_modelgraphs (#7941) - Fixed the usage of
bias_initializerinHeteroLinear(#7923) - Fixed broken links in
HGBDataset(#7907) - Fixed an issue where
SetTransformerAggregationproducedNaNvalues for isolates nodes (#7902) - Fixed
model_summaryon modules with uninitialized parameters (#7884) - Updated
QM9data pre-processing to include the SMILES string (#7867) - Fixed tracing of
add_self_loopsfor a dynamic number of nodes (#7330) - Fixed device issue in
PNAConv.get_degree_histogram(#7830) - Fixed the shape of
edge_label_timewhen using temporal sampling on homogeneous graphs (#7807) - Moved
torch_geometric.contrib.explain.GraphMaskExplainertotorch_geometric.explain.algorithm.GraphMaskExplainer(#7779) - Made
FieldStatusenum picklable to avoidPicklingErrorin a multi-process setting (#7808) - Fixed
edge_label_indexcomputation inLinkNeighborLoaderfor the homogeneous+disjointmode (#7791) - Fixed
CaptumExplainerforbinary_classificationtasks (#7787) - Warn user when using the
trainingflag into_heteromodules (#7772) - Unchained exceptions raised when accessing non-existent data attributes for better readability (#7734)
- Raise error when collecting non-existing attributes in
HeteroData(#7714) - Renamed
destargument todstinutils.geodesic_distance(#7708) - Changed
add_random_edgeto only add true negative edges (#7654) - Allowed the usage of
BasicGNNmodels inDeepGraphInfomax(#7648) - Breaking Change: Made
Data.keysa method rather than a property (#7629) - Added a
num_edgesparameter to the forward method ofHypergraphConv(#7560) - Fixed
get_mesh_laplacianfornormalization="sym"(#7544) - Use
dim_sizeto initialize output size of theEquilibriumAggregationlayer (#7530) - Added a
max_num_elementsparameter to the forward method ofGraphMultisetTransformer,GRUAggregation,LSTMAggregationandSetTransformerAggregation(#7529) - Fixed empty edge indices handling in
SparseTensor(#7519) - Move the
scalertensor inGeneralConvto the correct device (#7484) - Fixed
HeteroLinearbug 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_sizein therepeat_interleaveoperation inQuantileAggregation(#7426) - Fixed gradient computation of edge weights in
utils.spmm(#7428) - Re-factored
ClusterLoaderto integratepyg-libMETIS routine (#7416) - Fixed an index-out-of-range bug in
QuantileAggregationwhendim_sizeis passed (#7407) - The
filter_per_workeroption 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_elementsargument toSortAggregation(#7367) - Added the option to pass
fill_valueas atorch.tensortoutils.to_dense_batch(#7367) - Fixed a bug in which inputs where modified in-place in
to_hetero_with_bases(#7363) - Do not load
node_defaultandedge_defaultattributes infrom_networkx(#7348) - Updated examples to use
NeighborLoaderinstead ofNeighborSampler(#7152) - Fixed
HGTConvutility function_construct_src_node_feat(#7194) - Extend dataset summary to create stats for each node/edge type (#7203)
- Added an optional
batch_sizeargument toavg_pool_xandmax_pool_x(#7216) - Fixed
subgraphon unordered inputs (#7187) - Allow missing node types in
HeteroDictLinear(#7185) - Optimized
from_networkxmemory footprint by reducing unnecessary copies (#7119) - Added an optional
batch_sizeargument toLayerNorm,GraphNorm,InstanceNorm,GraphSizeNormandPairNorm(#7135) - Improved code coverage (#7093, #7195)
- Fix
numpyincompatiblity when reading files forPlanetoiddatasets (#7141) - Added support for
Data.num_edgesfor nativetorch.sparse.Tensoradjacency matrices (#7104) - Fixed crash of heterogeneous data loaders if node or edge types are missing (#7060, #7087)
- Accelerated attention-based
MultiAggregation(#7077) - Edges in
HeterophilousGraphDatasetare now undirected by default (#7065) - Fixed a bug in
FastHGTConvthat computed values via parameters used to compute the keys (#7050) - Accelerated sparse tensor conversion routines (#7042, #7043)
- Change
torch_sparse.SparseTensorlogic to utilizetorch.sparse_csrinstead (#7041) - Added an optional
batch_sizeandmax_num_nodesarguments toMemPoolinglayer (#7239) - Fixed training issues of the GraphGPS example (#7377)
- Allowed
CaptumExplainerto be called multiple times in a row (#7391)
- Dropped Python 3.7 support (#7939)
- Removed
layer_typeargument incontrib.explain.GraphMaskExplainer(#7445) - Replaced
FastHGTConvwithHGTConv(#7117)
- Added a memory-efficient
utils.one_hotimplementation (#7005) - Added
HeteroDictLinearand an optimizedFastHGTConvmodule (#6178, #6998) - Added the
DenseGATConvmodule (#6928) - Added
trim_to_layerutility function for more efficientNeighborLoaderuse-cases (#6661) - Added the
DistMultKGE model (#6958) - Added
HeteroData.set_value_dictfunctionality (#6961, #6974) - Added PyTorch >= 2.0 support (#6934, #7000)
- Added PyTorch Lightning >= 2.0 support (#6929)
- Added the
ComplExKGE model (#6898) - Added option to write benchmark results to csv (#6888)
- Added
HeteroLayerNormandHeteroBatchNormlayers (#6838) - Added the
HeterophilousGraphDatasetsuite (#6846) - Added support for sparse tensor in full batch mode inference benchmark (#6843)
- Enabled
NeighborLoaderto return number of sampled nodes and edges per hop (#6834) - Added
ZipLoaderto execute multipleNodeLoaderorLinkLoaderinstances (#6829) - Added common
utils.selectandutils.narrowfunctionality to support filtering of both tensors and lists (#6162) - Support
normalizationcustomization inget_mesh_laplacian(#6790) - Added the
TemporalEncodingmodule (#6785) - Added CPU-optimized
spmm_reducefunctionality via CSR format (#6699, #6759) - Added support for the revised version of the
MD17dataset (#6734) - Added TorchScript support to the
RECT_Lmodel (#6727) - Added TorchScript support to the
Node2Vecmodel (#6726) - Added
utils.to_edge_indexto convert sparse tensors to edge indices and edge attributes (#6728) - Fixed expected data format in
PolBlogsdataset (#6714) - Added
SimpleConvto perform non-trainable propagation (#6718) - Added a
RemoveDuplicatedEdgestransform (#6709) - Added TorchScript support to the
LINKXmodel (#6712) - Added
torch.jitexamples forexample/film.pyandexample/gcn.py(#6602) - Added
Padtransform (#5940, #6697, #6731, #6758) - Added full batch mode to the inference benchmark (#6631)
- Added
cataggregation type to theHeteroConvclass so that features can be concatenated during grouping (#6634) - Added
torch.compilesupport and benchmark study (#6610, #6952, #6953, #6980, #6983, #6984, #6985, #6986, #6989, #7002) - Added the
AntiSymmetricConvlayer (#6577) - Added a mixin for Huggingface model hub integration (#5930, #6591)
- Added support for accelerated GNN layers in
nn.conv.cugraphviacugraph-ops(#6278, #6388, #6412) - Added accelerated
index_sortfunction frompyg-libfor 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_idande_idattributes to mini-batches produced byNodeLoaderandLinkLoader(#6524) - Added
PGMExplainertotorch_geometric.contrib(#6149, #6588, #6589) - Added a
NumNeighborshelper class for specifying the number of neighbors when sampling (#6501, #6505, #6690) - Added caching to
is_node_attr()andis_edge_attr()calls (#6492) - Added
ToHeteroLinearandToHeteroMessagePassingmodules to accelerateto_heterofunctionality (#5992, #6456) - Added
GraphMaskExplainer(#6284) - Added the
GRBCDandPRBCDadversarial attack models (#5972) - Added
dropoutoption toSetTransformerandGraphMultisetTransformer(#6484) - Added option to customize loader arguments for evaluation in
LightningNodeDataandLightningLinkData(#6450, #6456) - Added option to customize
num_neighborsinNeighborSamplerafter instantiation (#6446) - Added the
Taobaodataset and a corresponding example for it (#6144) - Added
pyproject.toml(#6431) - Added the
torch_geometric.contribsub-package (#6422) - Warn on using latest documentation (#6418)
- Added basic
pyrighttype checker support (#6415) - Added a new external resource for link prediction (#6396)
- Added
CaptumExplainer(#6383, #6387, #6433, #6487, #6966) - Added support for custom
HeteroDatamini-batch class in remote backends (#6377) - Added the
GNNFFmodel (#5866) - Added
MLPAggregation,SetTransformerAggregation,GRUAggregation, andDeepSetsAggregationas adaptive readout functions (#6301, #6336, #6338) - Added
Dataset.to_datapipefor converting PyG datasets into a torchdataDataPipe(#6141) - Added
to_nested_tensorandfrom_nested_tensorfunctionality (#6329, #6330, #6331, #6332) - Added the
GPSConvGraph Transformer layer and example (#6326, #6327) - Added
networkitconversion utilities (#6321) - Added global dataset attribute access via
dataset.{attr_name}(#6319) - Added the
TransEKGE model and example (#6314) - Added the Freebase
FB15k_237dataset (#3204) - Added
Data.update()andHeteroData.update()functionality (#6313) - Added
PGExplainer(#6204) - Added the
AirfRANSdataset (#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
BA2MotifDatasetexplainer dataset (#6257) - Added
CycleMotifmotif generator to generaten-node cycle shaped motifs (#6256) - Added the
InfectionDatasetto evaluate explanations (#6222) - Added
characterization_scoreandfidelity_curve_aucexplainer metrics (#6188) - Added
get_message_passing_embeddings(#6201) - Added the
PointGNNConvlayer (#6194) - Added
GridGraphgraph generator to generate grid graphs (#6220 - Added explainability metrics for when ground truth is available (#6137)
- Added
visualize_feature_importanceto support node feature visualizations (#6094) - Added heterogeneous graph support to
Explanationframework (#6091, #6218) - Added a
CustomMotifmotif generator (#6179) - Added
ERGraphgraph generator to generate Ergos-Renyi (ER) graphs (#6073) - Added
BAGraphgraph generator to generate Barabasi-Albert graphs - the usage ofdatasets.BAShapesis now deprecated (#6072 - Added explainability benchmark dataset framework (#6104)
- Added
seed_timeattribute to temporalNodeLoaderoutputs in caseinput_timeis given (#6196) - Added
Data.edge_subgraphandHeteroData.edge_subgraphfunctionalities (#6193) - Added
input_timeoption toLightningNodeDataandtransform_sampler_outputtoNodeLoaderandLinkLoader(#6187) - Added
summaryfor PyG/PyTorch models (#5859, #6161) - Started adding
torch.sparsesupport to PyG (#5906, #5944, #6003, #6033, #6514, #6532, #6748, #6847, #6868, #6874, #6897, #6930, #6932, #6936, #6937, #6939, #6947, #6950, #6951, #6957) - Add
inputs_channelsback in training benchmark (#6154) - Added support for dropping nodes in
utils.to_dense_batchin casemax_num_nodesis smaller than the number of nodes (#6124) - Added the RandLA-Net architecture as an example (#5117)
- Migrate to
pyproject.tomlfor packaging (#6880) - Drop internal usage of
__dunder__names (#6999) - Changed the interface of
sort_edge_index,coalesceandto_undirectedto only return singleedge_indexinformation in case theedge_attrargument is not specified (#6875, #6879, #6893) - Fixed a bug in
to_heterowhen using an uninitialized submodule without implementingreset_parameters(#6863) - Fixed a bug in
get_mesh_laplacian(#6790) - Fixed a bug in which masks were not properly masked in
GNNExplaineron link prediction tasks (#6787) - Allow the usage of
ChebConvwithinGNNExplainer(#6778) - Allow setting the
EdgeStorage.num_edgesproperty (#6710) - Fixed a bug in
utils.bipartite_subgraph()and updated docs ofHeteroData.subgraph()(#6654) - Properly reset the
data_listcache of anInMemoryDatasetwhen accessingdataset.data(#6685) - Fixed a bug in
Data.subgraph()andHeteroData.subgraph()(#6613) - Fixed a bug in
PNAConvandDegreeScalerAggregationto 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
DataLoaderworkers with affinity to start atcpu0(#6512) - Allow 1D input to
global_*_poolfunctions (#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
LightningNodeDataandLightningLinkDatacode 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
DataParallelclass (#6376) - Fix
ImbalancedSampleron slicedInMemoryDataset(#6374) - Breaking Change: Changed the interface and implementation of
GraphMultisetTransformer(#6343) - Fixed the approximate PPR variant in
transforms.GDCto not crash on graphs with isolated nodes (#6242) - Added a warning when accesing
InMemoryDataset.data(#6318) - Drop
SparseTensordependency inGraphStore(#5517) - Replace
NeighborSamplerwithNeighborLoaderin the distributed sampling example (#6204) - Fixed the filtering of node features in
transforms.RemoveIsolatedNodes(#6308) - Fixed a bug in
DimeNetthat causes a output dimension mismatch (#6305) - Fixed
Data.to_heterogeneous()with emptyedge_index(#6304) - Unify
Explanation.node_maskandExplanation.node_feat_mask(#6267) - Moved thresholding config of the
ExplainertoExplanation(#6215) - Fixed a bug in the output order in
HeteroLinearfor un-sorted type vectors (#6198) - Breaking Change: Move
ExplainerConfigarguments to theExplainerclass (#6176) - Refactored
NeighborSamplerto be input-type agnostic (#6173) - Infer correct CUDA device ID in
profileitdecorator (#6164) - Correctly use edge weights in
GDCexample (#6159) - Breaking Change: Moved PyTorch Lightning data modules to
torch_geometric.data.lightning(#6140) - Make
torch_sparsean optional dependency (#6132, #6134, #6138, #6139, #7387) - Optimized
utils.softmaximplementation (#6113, #6155, #6805) - Optimized
topkimplementation for large enough graphs (#6123)
torch-sparseis now an optional dependency (#6625, #6626, #6627, #6628, #6629, #6630)- Removed most of the
torch-scatterdependencies (#6394, #6395, #6399, #6400, #6615, #6617) - Removed the deprecated classes
GNNExplainerandExplainerfromnn.models(#6382) - Removed
target_indexargument in theExplainerinterface (#6270) - Removed
Aggregation.set_validate_argsoption (#6175)
- Extended
GNNExplainerto support edge level explanations (#6056, #6083) - Added CPU affinitization for
NodeLoader(#6005) - Added triplet sampling in
LinkNeighborLoader(#6004) - Added
FusedAggregationof simple scatter reductions (#6036) - Added a
to_smilesfunction (#6038) - Added option to make normalization coefficients trainable in
PNAConv(#6039) - Added
semi_gradoption inVarAggregationandStdAggregation(#6042) - Allow for fused aggregations in
MultiAggregation(#6036, #6040) - Added
HeteroDatasupport forto_captum_modeland addedto_captum_input(#5934) - Added
HeteroDatasupport inRandomNodeLoader(#6007) - Added bipartite
GraphSAGEexample (#5834) - Added
LRGBDatasetto 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
int32support inNeighborLoader(#5948) - Add
dgNNsupport andFusedGATConvimplementation (#5140) - Added
lr_scheduler_solverand customizedlr_schedulerclasses (#5942) - Add
to_fixed_sizegraph transformer (#5939) - Add support for symbolic tracing of
SchNetmodel (#5938) - Add support for customizable interaction graph in
SchNetmodel (#5919) - Started adding
torch.sparsesupport to PyG (#5906, #5944, #6003, #6633) - Added
HydroNetwater cluster dataset (#5537, #5902, #5903) - Added explainability support for heterogeneous GNNs (#5886)
- Added
SparseTensorsupport toSuperGATConv(#5888) - Added TorchScript support for
AttentiveFP(#5868) - Added
num_stepsargument to training and inference benchmarks (#5898) - Added
torch.onnx.exportsupport (#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
samplersupport inLightningDataModule(#5820) - Added a
return_semantic_attention_weightsargumentHANConv(#5787) - Added
disjointargument toNeighborLoaderandLinkNeighborLoader(#5775) - Added support for
input_timeinNeighborLoader(#5763) - Added
disjointmode for temporalLinkNeighborLoader(#5717) - Added
HeteroDatasupport fortransforms.Constant(#5700) - Added
np.memmapsupport inNeighborLoader(#5696) - Added
assortativitythat computes degree assortativity coefficient (#5587) - Added
SSGConvlayer (#5599) - Added
shuffle_node,mask_featureandadd_random_edgeaugmentation methdos (#5548) - Added
dropout_pathaugmentation 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_strategyoption toneighbor_sample(#5576) - Added
torch_geometric.samplerpackage to docs (#5563) - Added the
DGraphFindynamic graph dataset (#5504) - Added
dropout_edgeaugmentation that randomly drops edges from a graph - the usage ofdropout_adjis now deprecated (#5495) - Added
dropout_nodeaugmentation that randomly drops nodes from a graph (#5481) - Added
AddRandomMetaPathsthat adds edges based on random walks along a metapath (#5397) - Added
WLConvContinuousfor performing WL refinement with continuous attributes (#5316) - Added
print_summarymethod for thetorch_geometric.data.Datasetinterface (#5438) - Added
samplersupport toLightningDataModule(#5456, #5457) - Added official splits to
MalNetTinydataset (#5078) - Added
IndexToMaskandMaskToIndextransforms (#5375, #5455) - Added
FeaturePropagationtransform (#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-libneighbor sampling (#5384, #5388) - Added
pyg_lib.segment_matmulintegration withinHeteroLinear(#5330, #5347)) - Enabled
bf16support in benchmark scripts (#5293, #5341) - Added
Aggregation.set_validate_argsoption to skip validation ofdim_size(#5290) - Added
SparseTensorsupport 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_heteroworks withSparseTensor(#5222) - Added
torch_geometric.explainmodule with base functionality for explainability methods (#5804, #6054, #6089)
- Moved and adapted
GNNExplainerfromtorch_geometric.nntotorch_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
VirtualNodemistakenly treated node features as edge features (#5819) - Fixed
setterandgetterhandling inBaseStorage(#5815) - Fixed
pathinhetero_conv_dblp.pyexample (#5686) - Fix
auto_select_deviceroutine in GraphGym for PyTorch Lightning>=1.7 (#5677) - Support
in_channelswithtupleinGENConvfor bipartite message passing (#5627, #5641) - Handle cases of not having enough possible negative edges in
RandomLinkSplit(#5642) - Fix
RGCN+pyg-libforLongTensorinput (#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_kwargsinMultiAggregation(#5601) - Changed
BatchNormto 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
.inParameterDictkey names (#5494) - Renamed
drop_unconnected_nodestodrop_unconnected_node_typesanddrop_orig_edgestodrop_orig_edge_typesinAddMetapaths(#5490) - Improved
utils.scatterperformance by explicitly choosing better implementation foraddandmeanreduction (#5399) - Fix
to_dense_adjwith emptyedge_index(#5476) - The
AttentionalAggregationmodule can now be applied to compute attentin on a per-feature level (#5449) - Ensure equal lenghts of
num_neighborsacross edge types inNeighborLoader(#5444) - Fixed a bug in
TUDatasetin which node features were wrongly constructed whenevernode_attributesonly hold a single feature (e.g., inPROTEINS) (#5441) - Breaking change: removed
num_neighborsas an attribute of loader (#5404) ASAPoolingis now jittable (#5395)- Updated unsupervised
GraphSAGEexample to leverageLinkNeighborLoader(#5317) - Replace in-place operations with out-of-place ones to align with
torch.scatter_reduceAPI (#5353) - Breaking bugfix:
PointTransformerConvnow correctly usessumaggregation (#5332) - Improve out-of-bounds error message in
MessagePassing(#5339) - Allow file names of a
Datasetto be specified as either property and method (#5338) - Fixed separating a list of
SparseTensorwithinInMemoryDataset(#5299) - Improved name resolving of normalization layers (#5277)
- Fail gracefully on
GLIBCerrors withintorch-spline-conv(#5276) - Fixed
Dataset.num_classesin case atransformmodifiesdata.y(#5274) - Allow customization of the activation function within
PNAConv(#5262) - Do not fill
InMemoryDatasetcache ondataset.num_features(#5264) - Changed tests relying on
dblpdatasets to instead use synthetic data (#5250) - Fixed a bug for the initialization of activation function examples in
custom_graphgym(#5243) - Allow any integer tensors when checking edge_index input to message passing (5281)
- Removed
scatter_reduceoption from experimental mode (#5399)
- Added the test for
DeepGCNLayer(#5704) - Allow
.inModuleDictkey names (#5227) - Added
edge_label_timeargument toLinkNeighborLoader(#5137, #5173) - Let
ImbalancedSampleraccepttorch.Tensoras input (#5138) - Added
flowargument togcn_normto correctly normalize the adjacency matrix inGCNConv(#5149) NeighborSamplersupports graphs without edges (#5072)- Added the
MeanSubtractionNormlayer (#5068) - Added
pyg_lib.segment_matmulintegration withinRGCNConv(#5052, #5096) - Support
SparseTensoras edge label inLightGCN(#5046) - Added support for
BasicGNNmodels withinto_hetero(#5091) - Added support for computing weighted metapaths in
AddMetapaths(#5049) - Added inference benchmark suite (#4915)
- Added a dynamically sized batch sampler for filling a mini-batch with a variable number of samples up to a maximum size (#4972)
- Added fine grained options for setting
biasanddropoutper layer in theMLPmodel (#4981) - Added
EdgeCNNmodel (#4991) - Added scalable
inferencemode inBasicGNNwith layer-wise neighbor loading (#4977) - Added inference benchmarks (#4892, #5107)
- Added PyTorch 1.12 support (#4975)
- Added
unbatch_edge_indexfunctionality for splitting anedge_indextensor according to abatchvector (#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.aggrpackage to documentation (#4927) - Added support for
follow_batchfor lists or dictionaries of tensors (#4837) - Added
Data.validate()andHeteroData.validate()functionality (#4885) - Added
LinkNeighborLoadersupport toLightningDataModule(#4868) - Added
predict()support to theLightningNodeDatamodule (#4884) - Added
time_attrargument toLinkNeighborLoader(#4877, #4908) - Added a
filter_per_workerargument to data loaders to allow filtering of data within sub-processes (#4873) - Added a
NeighborLoaderbenchmark script (#4815, #4862) - Added support for
FeatureStoreandGraphStoreinNeighborLoader(#4817, #4851, #4854, #4856, #4857, #4882, #4883, #4929, #4992, #4962, #4968, #5037, #5088, #5270, #5307, #5318) - Added a
normalizeparameter todense_diff_pool(#4847) - Added
size=Noneexplanation to jittableMessagePassingmodules in the documentation (#4850) - Added documentation to the
DataLoaderIteratorclass (#4838) - Added
GraphStoresupport toDataandHeteroData(#4816) - Added
FeatureStoresupport toDataandHeteroData(#4807, #4853) - Added
FeatureStoreandGraphStoreabstractions (#4534, #4568, #5120) - Added support for dense aggregations in
global_*_pool(#4827) - Added Python version requirement (#4825)
- Added TorchScript support to
JumpingKnowledgemodule (#4805) - Added a
max_sampleargument toAddMetaPathsin order to tackle very dense metapath edges (#4750) - Test
HANConvwith empty tensors (#4756, #4841) - Added the
biasvector to theGCNmodel definition in the "Create Message Passing Networks" tutorial (#4755) - Added
transforms.RootedSubgraphinterface with two implementations:RootedEgoNetsandRootedRWSubgraph(#3926) - Added
ptrvectors forfollow_batchattributes withinBatch.from_data_list(#4723) - Added
torch_geometric.nn.aggrpackage (#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
GroupAddRevmodule with support for reducing training GPU memory (#4671, #4701, #4715, #4730) - Added benchmarks via
wandb(#4656, #4672, #4676) - Added
unbatchfunctionality (#4628) - Confirm that
to_hetero()works with custom functions, e.g.,dropout_adj(4653) - Added the
MLP.plain_last=Falseoption (4652) - Added a check in
HeteroConvandto_hetero()to ensure thatMessagePassing.add_self_loopsis disabled (4647) - Added
HeteroData.subgraph(),HeteroData.node_type_subgraph()andHeteroData.edge_type_subgraph()support (#4635) - Added the
AQSOLdataset (#4626) - Added
HeteroData.node_items()andHeteroData.edge_items()functionality (#4644) - Added PyTorch Lightning support in GraphGym (#4511, #4516 #4531, #4689, #4843)
- Added support for returning embeddings in
MLPmodels (#4625) - Added faster initialization of
NeighborLoaderin case edge indices are already sorted (viais_sorted=True) (#4620, #4702) - Added
AddPositionalEncodingtransform (#4521) - Added
HeteroData.is_undirected()support (#4604) - Added the
GeniusandWikidatasets tonn.datasets.LINKXDataset(#4570, #4600) - Added
nn.aggr.EquilibrumAggregationimplicit global layer (#4522) - Added support for graph-level outputs in
to_hetero(#4582) - Added
CHANGELOG.md(#4581) - Added
HeteroDatasupport to theRemoveIsolatedNodestransform (#4479) - Added
HeteroData.num_featuresfunctionality (#4504) - Added support for projecting features before propagation in
SAGEConv(#4437) - Added
Geom-GCNsplits to thePlanetoiddatasets (#4442) - Added a
LinkNeighborLoaderfor training scalable link predictions models #4396, #4439, #4441, #4446, #4508, #4509) - Added an unsupervised
GraphSAGEexample onPPI(#4416) - Added support for
LSTMaggregation inSAGEConv(#4379) - Added support for floating-point labels in
RandomLinkSplit(#4311, #4383) - Added support for
torch.dataDataPipes(#4302, #4345, #4349) - Added support for the
cosineargument in theKNNGraph/RadiusGraphtransforms (#4344) - Added support graph-level attributes in
networkxconversion (#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_messagemethod to customize making explanations on messages (#4278, #4448)) - Added support for
GATv2Convin thenn.models.GATmodel (#4357) - Added
HeteroData.subgraphfunctionality (#4243) - Added the
MaskLabelmodule and a corresponding masked label propagation example (#4197) - Added temporal sampling support to
NeighborLoader(#4025) - Added an example for unsupervised heterogeneous graph learning based on "Deep Multiplex Graph Infomax" (#3189)
- Changed docstring for
RandomLinkSplit(#5190) - Switched to PyTorch
scatter_reduceimplementation - experimental feature (#5120) - Fixed
RGATConvdevice mismatches forf-scaledmode (#5187) - Allow for multi-dimensional
edge_labelsinLinkNeighborLoader(#5186) - Fixed
GINEConvbug with non-sequential input (#5154) - Improved error message (#5095)
- Fixed
HGTLoaderbug which produced outputs with missing edge types (#5067) - Fixed dynamic inheritance issue in data batching (#5051)
- Fixed
load_state_dictinLinearwithstrict=Falsemode (5094) - Fixed typo in
MaskLabel.ratio_mask(5093) - Fixed
data.num_node_featurescomputation for sparse matrices (5089) - Fixed
torch.fxbug withtorch.nn.aggrpackage (#5021)) - Fixed
GenConvtest (4993) - Fixed packaging tests for Python 3.10 (4982)
- Changed
act_dict(part ofgraphgym) to create individual instances instead of reusing the same ones everywhere (4978) - Fixed issue where one-hot tensors were passed to
F.one_hot(4970) - Fixed
boolarugments inargparseinbenchmark/(#4967) - Fixed
BasicGNNfornum_layers=1, which now respects a desired number ofout_channels(#4943) len(batch)will now return the number of graphs inside the batch, not the number of attributes (#4931)- Fixed
data.subgraphgeneration for 0-dim tensors (#4932) - Removed unnecssary inclusion of self-loops when sampling negative edges (#4880)
- Fixed
InMemoryDatasetinferring wronglenfor lists of tensors (#4837) - Fixed
Batch.separatewhen using it for lists of tensors (#4837) - Correct docstring for SAGEConv (#4852)
- Fixed a bug in
TUDatasetwherepre_filterwas not applied wheneverpre_transformwas present - Renamed
RandomTranslatetoRandomJitter- the usage ofRandomTranslateis now deprecated (#4828) - Do not allow accessing edge types in
HeteroDatawith two node types when there exists multiple relations between these types (#4782) - Allow
edge_type == rev_edge_typeargument inRandomLinkSplit(#4757, #5221) - Fixed a numerical instability in the
GeneralConvandneighbor_sampletests (#4754) - Fixed a bug in
HANConvin which destination node features rather than source node features were propagated (#4753) - Fixed versions of
checkoutandsetup-pythonin CI (#4751) - Fixed
protobufversion (#4719) - Fixed the ranking protocol bug in the RGCN link prediction example (#4688)
- Math support in Markdown (#4683)
- Allow for
setterproperties inData(#4682, #4686) - Allow for optional
edge_weightinGCN2Conv(#4670) - Fixed the interplay between
TUDatasetandpre_transformthat modify node features (#4669) - Make use of the
pyg_sphinx_themedocumentation template (#4664, #4667) - Refactored reading molecular positions from sdf file for qm9 datasets (4654)
- Fixed
MLP.jittable()bug in casereturn_emb=True(#4645, #4648) - The generated node features of
StochasticBlockModelDatasetare now ordered with respect to their labels (#4617) - Fixed typos in the documentation (#4616, #4824, #4895, #5161)
- The
biasargument inTAGConvis now actually applied (#4597) - Fixed subclass behavior of
processanddownloadinDatsaet(#4586) - Fixed filtering of attributes for loaders in case
__cat_dim__ != 0(#4629) - Fixed
SparseTensorsupport inNeighborLoader(#4320) - Fixed average degree handling in
PNAConv(#4312) - Fixed a bug in
from_networkxin 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
DimeNetwhen resetting parameters (#4424) - Fixed bipartite message passing in case
flow="target_to_source"(#4418) - Fixed a bug in which
num_nodeswas not properly updated in theFixedPointstransform (#4394) - PyTorch Lightning >= 1.6 support (#4377)
- Fixed a bug in which
GATConvwas 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.GATdid not produceout_channels-many output channels (#4299) - Fixed mini-batching with empty lists as attributes (#4293)
- Fixed a bug in which
GCNConvcould not be combined withto_heteroon heterogeneous graphs with one node type (#4279) - Added a scheduler to the Graph Sage OGBN Example #9877
- Remove internal metrics in favor of
torchmetrics(#4287)