pyg-nightly 2.7.0.dev20250212__py3-none-any.whl → 2.7.0.dev20250213__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyg-nightly
3
- Version: 2.7.0.dev20250212
3
+ Version: 2.7.0.dev20250213
4
4
  Summary: Graph Neural Network Library for PyTorch
5
5
  Keywords: deep-learning,pytorch,geometric-deep-learning,graph-neural-networks,graph-convolutional-networks
6
6
  Author-email: Matthias Fey <matthias@pyg.org>
@@ -1,4 +1,4 @@
1
- torch_geometric/__init__.py,sha256=hKo_s3A34_-rUX4Hzm8jMIHesXZ_6czNizE8bAkdnNc,1904
1
+ torch_geometric/__init__.py,sha256=wOLNLy1SUhTvDg4h0bCQM5edX6RXk83qnn4omNGqmaw,1904
2
2
  torch_geometric/_compile.py,sha256=f-WQeH4VLi5Hn9lrgztFUCSrN_FImjhQa6BxFzcYC38,1338
3
3
  torch_geometric/_onnx.py,sha256=V9ffrIKSqhDw6xUZ12lkuSfNs48cQp2EeJ6Z19GfnVw,349
4
4
  torch_geometric/backend.py,sha256=lVaf7aLoVaB3M-UcByUJ1G4T4FOK6LXAg0CF4W3E8jo,1575
@@ -288,8 +288,8 @@ torch_geometric/loader/shadow.py,sha256=_hCspYf9SlJYX0lqEjxFec9e9t1iMScNThOoWR1w
288
288
  torch_geometric/loader/temporal_dataloader.py,sha256=AQ2QFeiXKbPp6I8sUeE8H7br-1_yndivXt7Z6_w62zI,2248
289
289
  torch_geometric/loader/utils.py,sha256=f27mczQ7fEP2HpTsJGJxKS0slPu0j8zTba3jP8ViNck,14901
290
290
  torch_geometric/loader/zip_loader.py,sha256=3lt10fD15Rxm1WhWzypswGzCEwUz4h8OLCD1nE15yNg,3843
291
- torch_geometric/metrics/__init__.py,sha256=bkNC9USDDxPq9-_duiKTXJoDv1Sb0-zrpqTeOGv55CM,635
292
- torch_geometric/metrics/link_pred.py,sha256=VEpa5605jJ5uH1G-SaxQNKelTpU156VsZMmde-Z22e4,27951
291
+ torch_geometric/metrics/__init__.py,sha256=3krvDobW6vV5yHTjq2S2pmOXxNfysNG26muq7z48e94,699
292
+ torch_geometric/metrics/link_pred.py,sha256=X8LXJvJ0dwjOeO0PvB6xe-qkBntmefHKC4zex7Q2i0I,29766
293
293
  torch_geometric/nn/__init__.py,sha256=RrWRzEoqtR3lsO2lAzYXboLPb3uYEX2z3tLxiBIVWjc,847
294
294
  torch_geometric/nn/data_parallel.py,sha256=lDAxRi83UNuzAQSj3eu9K2sQheOIU6wqR5elS6oDs90,4764
295
295
  torch_geometric/nn/encoding.py,sha256=QNjwWczYExZ1wRGBmpuqYbn6tB7NC4BU-DEgzjhcZqw,3115
@@ -630,6 +630,6 @@ torch_geometric/utils/undirected.py,sha256=H_nfpI0_WluOG6VfjPyldvcjL4w5USAKWu2x5
630
630
  torch_geometric/visualization/__init__.py,sha256=PyR_4K5SafsJrBr6qWrkjKr6GBL1b7FtZybyXCDEVwY,154
631
631
  torch_geometric/visualization/graph.py,sha256=ZuLPL92yGRi7lxlqsUPwL_EVVXF7P2kMcveTtW79vpA,4784
632
632
  torch_geometric/visualization/influence.py,sha256=CWMvuNA_Nf1sfbJmQgn58yS4OFpeKXeZPe7kEuvkUBw,477
633
- pyg_nightly-2.7.0.dev20250212.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
634
- pyg_nightly-2.7.0.dev20250212.dist-info/METADATA,sha256=imhjF5_GnKoAZ1c2oZk1Q1MFm-5fj30dvj8iYmb-1kg,62977
635
- pyg_nightly-2.7.0.dev20250212.dist-info/RECORD,,
633
+ pyg_nightly-2.7.0.dev20250213.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
634
+ pyg_nightly-2.7.0.dev20250213.dist-info/METADATA,sha256=KMYn4w4Bn5To5C_3fCsn61FLL62Iz10xQk493Q4OeCE,62977
635
+ pyg_nightly-2.7.0.dev20250213.dist-info/RECORD,,
@@ -30,7 +30,7 @@ from .lazy_loader import LazyLoader
30
30
  contrib = LazyLoader('contrib', globals(), 'torch_geometric.contrib')
31
31
  graphgym = LazyLoader('graphgym', globals(), 'torch_geometric.graphgym')
32
32
 
33
- __version__ = '2.7.0.dev20250212'
33
+ __version__ = '2.7.0.dev20250213'
34
34
 
35
35
  __all__ = [
36
36
  'Index',
@@ -13,6 +13,7 @@ from .link_pred import (
13
13
  LinkPredCoverage,
14
14
  LinkPredDiversity,
15
15
  LinkPredPersonalization,
16
+ LinkPredAveragePopularity,
16
17
  )
17
18
 
18
19
  link_pred_metrics = [
@@ -28,6 +29,7 @@ link_pred_metrics = [
28
29
  'LinkPredCoverage',
29
30
  'LinkPredDiversity',
30
31
  'LinkPredPersonalization',
32
+ 'LinkPredAveragePopularity',
31
33
  ]
32
34
 
33
35
  __all__ = link_pred_metrics
@@ -722,12 +722,14 @@ class LinkPredPersonalization(_LinkPredMetric):
722
722
  of user recommendations should be processed at once.
723
723
  (default: :obj:`2**16`)
724
724
  """
725
+ higher_is_better: bool = True
726
+
725
727
  def __init__(self, k: int, batch_size: int = 2**16) -> None:
726
728
  super().__init__(k)
727
729
  self.batch_size = batch_size
728
730
 
729
731
  if WITH_TORCHMETRICS:
730
- self.add_state("preds", default=[], dist_reduce_fx="cat")
732
+ self.add_state('preds', default=[], dist_reduce_fx='cat')
731
733
  self.add_state('dev_tensor', torch.empty(0), dist_reduce_fx='sum')
732
734
  else:
733
735
  self.preds: List[Tensor] = []
@@ -787,3 +789,51 @@ class LinkPredPersonalization(_LinkPredMetric):
787
789
 
788
790
  def _reset(self) -> None:
789
791
  self.preds = []
792
+
793
+
794
+ class LinkPredAveragePopularity(_LinkPredMetric):
795
+ r"""A link prediction metric to compute the Average Recommendation
796
+ Popularity (ARP) @ :math:`k`, which provides insights into the model's
797
+ tendency to recommend popular items by averaging the popularity scores of
798
+ items within the top-:math:`k` recommendations.
799
+
800
+ Args:
801
+ k (int): The number of top-:math:`k` predictions to evaluate against.
802
+ popularity (torch.Tensor): The popularity of every item in the training
803
+ set, *e.g.*, the number of times an item has been rated.
804
+ """
805
+ higher_is_better: bool = False
806
+
807
+ def __init__(self, k: int, popularity: Tensor) -> None:
808
+ super().__init__(k)
809
+
810
+ if WITH_TORCHMETRICS:
811
+ self.add_state('accum', torch.tensor(0.), dist_reduce_fx='sum')
812
+ self.add_state('total', torch.tensor(0), dist_reduce_fx='sum')
813
+ else:
814
+ self.register_buffer('accum', torch.tensor(0.))
815
+ self.register_buffer('total', torch.tensor(0))
816
+
817
+ self.popularity: Tensor
818
+ self.register_buffer('popularity', popularity)
819
+
820
+ def update(
821
+ self,
822
+ pred_index_mat: Tensor,
823
+ edge_label_index: Union[Tensor, Tuple[Tensor, Tensor]],
824
+ edge_label_weight: Optional[Tensor] = None,
825
+ ) -> None:
826
+ pred_index_mat = pred_index_mat[:, :self.k]
827
+ popularity = self.popularity[pred_index_mat]
828
+ popularity = popularity.to(self.accum.dtype).mean(dim=-1)
829
+ self.accum += popularity.sum()
830
+ self.total += popularity.numel()
831
+
832
+ def compute(self) -> Tensor:
833
+ if self.total == 0:
834
+ return torch.zeros_like(self.accum)
835
+ return self.accum / self.total
836
+
837
+ def _reset(self) -> None:
838
+ self.accum.zero_()
839
+ self.total.zero_()