nextrec 0.3.1__py3-none-any.whl → 0.3.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. nextrec/__version__.py +1 -1
  2. nextrec/basic/features.py +10 -23
  3. nextrec/basic/layers.py +18 -61
  4. nextrec/basic/loggers.py +1 -1
  5. nextrec/basic/metrics.py +55 -33
  6. nextrec/basic/model.py +258 -394
  7. nextrec/data/__init__.py +2 -2
  8. nextrec/data/data_utils.py +80 -4
  9. nextrec/data/dataloader.py +36 -57
  10. nextrec/data/preprocessor.py +5 -4
  11. nextrec/models/generative/__init__.py +5 -0
  12. nextrec/models/generative/hstu.py +399 -0
  13. nextrec/models/match/dssm.py +2 -2
  14. nextrec/models/match/dssm_v2.py +2 -2
  15. nextrec/models/match/mind.py +2 -2
  16. nextrec/models/match/sdm.py +2 -2
  17. nextrec/models/match/youtube_dnn.py +2 -2
  18. nextrec/models/multi_task/esmm.py +1 -1
  19. nextrec/models/multi_task/mmoe.py +1 -1
  20. nextrec/models/multi_task/ple.py +1 -1
  21. nextrec/models/multi_task/poso.py +1 -1
  22. nextrec/models/multi_task/share_bottom.py +1 -1
  23. nextrec/models/ranking/afm.py +1 -1
  24. nextrec/models/ranking/autoint.py +1 -1
  25. nextrec/models/ranking/dcn.py +1 -1
  26. nextrec/models/ranking/deepfm.py +1 -1
  27. nextrec/models/ranking/dien.py +1 -1
  28. nextrec/models/ranking/din.py +1 -1
  29. nextrec/models/ranking/fibinet.py +1 -1
  30. nextrec/models/ranking/fm.py +1 -1
  31. nextrec/models/ranking/masknet.py +2 -2
  32. nextrec/models/ranking/pnn.py +1 -1
  33. nextrec/models/ranking/widedeep.py +1 -1
  34. nextrec/models/ranking/xdeepfm.py +1 -1
  35. nextrec/utils/__init__.py +2 -1
  36. nextrec/utils/common.py +21 -2
  37. nextrec/utils/optimizer.py +7 -3
  38. {nextrec-0.3.1.dist-info → nextrec-0.3.3.dist-info}/METADATA +10 -4
  39. nextrec-0.3.3.dist-info/RECORD +57 -0
  40. nextrec-0.3.1.dist-info/RECORD +0 -56
  41. {nextrec-0.3.1.dist-info → nextrec-0.3.3.dist-info}/WHEEL +0 -0
  42. {nextrec-0.3.1.dist-info → nextrec-0.3.3.dist-info}/licenses/LICENSE +0 -0
nextrec/utils/__init__.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from .optimizer import get_optimizer, get_scheduler
2
2
  from .initializer import get_initializer
3
3
  from .embedding import get_auto_embedding_dim
4
- from .common import resolve_device
4
+ from .common import resolve_device, to_tensor
5
5
  from . import optimizer, initializer, embedding, common
6
6
 
7
7
  __all__ = [
@@ -10,6 +10,7 @@ __all__ = [
10
10
  'get_initializer',
11
11
  'get_auto_embedding_dim',
12
12
  'resolve_device',
13
+ 'to_tensor',
13
14
  'optimizer',
14
15
  'initializer',
15
16
  'embedding',
nextrec/utils/common.py CHANGED
@@ -1,7 +1,6 @@
1
1
  import torch
2
2
  import platform
3
3
  from collections import OrderedDict
4
- from typing import Sequence, Union, TYPE_CHECKING
5
4
 
6
5
 
7
6
  def resolve_device() -> str:
@@ -19,6 +18,14 @@ def resolve_device() -> str:
19
18
  return "cpu"
20
19
 
21
20
 
21
+ def normalize_to_list(value: str | list[str] | None) -> list[str]:
22
+ if value is None:
23
+ return []
24
+ if isinstance(value, str):
25
+ return [value]
26
+ return list(value)
27
+
28
+
22
29
  def merge_features(primary, secondary) -> list:
23
30
  """
24
31
  Merge two feature lists while preserving order and deduplicating by feature name.
@@ -29,7 +36,6 @@ def merge_features(primary, secondary) -> list:
29
36
  merged.setdefault(feat.name, feat)
30
37
  return list(merged.values())
31
38
 
32
-
33
39
  def get_mlp_output_dim(params: dict, fallback: int) -> int:
34
40
  """
35
41
  Get the output dimension of an MLP-like config.
@@ -39,3 +45,16 @@ def get_mlp_output_dim(params: dict, fallback: int) -> int:
39
45
  if dims:
40
46
  return dims[-1]
41
47
  return fallback
48
+
49
+ def to_tensor(value, dtype: torch.dtype, device: torch.device | str | None = None) -> torch.Tensor:
50
+ """Convert any value to a tensor with the desired dtype/device."""
51
+ if value is None:
52
+ raise ValueError("[Tensor Utils Error] Cannot convert None to tensor.")
53
+ tensor = value if isinstance(value, torch.Tensor) else torch.as_tensor(value)
54
+ if tensor.dtype != dtype:
55
+ tensor = tensor.to(dtype=dtype)
56
+ if device is not None:
57
+ target_device = device if isinstance(device, torch.device) else torch.device(device)
58
+ if tensor.device != target_device:
59
+ tensor = tensor.to(target_device)
60
+ return tensor
@@ -10,7 +10,7 @@ from typing import Iterable
10
10
 
11
11
 
12
12
  def get_optimizer(
13
- optimizer: str = "adam",
13
+ optimizer: str | torch.optim.Optimizer = "adam",
14
14
  params: Iterable[torch.nn.Parameter] | None = None,
15
15
  **optimizer_params
16
16
  ):
@@ -51,7 +51,11 @@ def get_optimizer(
51
51
  return optimizer_fn
52
52
 
53
53
 
54
- def get_scheduler(scheduler, optimizer, **scheduler_params):
54
+ def get_scheduler(
55
+ scheduler: str | torch.optim.lr_scheduler._LRScheduler | torch.optim.lr_scheduler.LRScheduler | type[torch.optim.lr_scheduler._LRScheduler] | type[torch.optim.lr_scheduler.LRScheduler] | None,
56
+ optimizer,
57
+ **scheduler_params
58
+ ):
55
59
  """
56
60
  Get learning rate scheduler function.
57
61
 
@@ -66,7 +70,7 @@ def get_scheduler(scheduler, optimizer, **scheduler_params):
66
70
  scheduler_fn = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, **scheduler_params)
67
71
  else:
68
72
  raise NotImplementedError(f"Unsupported scheduler: {scheduler}")
69
- elif isinstance(scheduler, torch.optim.lr_scheduler._LRScheduler):
73
+ elif isinstance(scheduler, (torch.optim.lr_scheduler._LRScheduler, torch.optim.lr_scheduler.LRScheduler)):
70
74
  scheduler_fn = scheduler
71
75
  else:
72
76
  raise TypeError(f"Invalid scheduler type: {type(scheduler)}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextrec
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: A comprehensive recommendation library with match, ranking, and multi-task learning models
5
5
  Project-URL: Homepage, https://github.com/zerolovesea/NextRec
6
6
  Project-URL: Repository, https://github.com/zerolovesea/NextRec
@@ -63,7 +63,7 @@ Description-Content-Type: text/markdown
63
63
  ![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)
64
64
  ![PyTorch](https://img.shields.io/badge/PyTorch-1.10+-ee4c2c.svg)
65
65
  ![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)
66
- ![Version](https://img.shields.io/badge/Version-0.3.1-orange.svg)
66
+ ![Version](https://img.shields.io/badge/Version-0.3.3-orange.svg)
67
67
 
68
68
  English | [中文文档](README_zh.md)
69
69
 
@@ -75,13 +75,19 @@ English | [中文文档](README_zh.md)
75
75
 
76
76
  NextRec is a modern recommendation framework built on PyTorch, delivering a unified experience for modeling, training, and evaluation. It follows a modular design with rich model implementations, data-processing utilities, and engineering-ready training components. NextRec focuses on large-scale industrial recall scenarios on Spark clusters, training on massive offline parquet features.
77
77
 
78
- ### Why NextRec
78
+ ## Why NextRec
79
79
 
80
80
  - **Unified feature engineering & data pipeline**: Dense/Sparse/Sequence feature definitions, persistent DataProcessor, and batch-optimized RecDataLoader, matching offline feature training/inference in industrial big-data settings.
81
81
  - **Multi-scenario coverage**: Ranking (CTR/CVR), retrieval, multi-task learning, and more marketing/rec models, with a continuously expanding model zoo.
82
82
  - **Developer-friendly experience**: Stream processing/training/inference for csv/parquet/pathlike data, plus GPU/MPS acceleration and visualization support.
83
83
  - **Efficient training & evaluation**: Standardized engine with optimizers, LR schedulers, early stopping, checkpoints, and detailed logging out of the box.
84
84
 
85
+ ## Architecture
86
+
87
+ NextRec adopts a modular and low-coupling engineering design, enabling full-pipeline reusability and scalability across data processing → model construction → training & evaluation → inference & deployment. Its core components include: a Feature-Spec-driven Embedding architecture, the BaseModel abstraction, a set of independent reusable Layers, a unified DataLoader for both training and inference, and a ready-to-use Model Zoo.
88
+
89
+ ![NextRec Architecture](asserts/nextrec_diagram_en.png)
90
+
85
91
  > The project borrows ideas from excellent open-source rec libraries. Early layers referenced [torch-rechub](https://github.com/datawhalechina/torch-rechub) but have been replaced with in-house implementations. torch-rechub remains mature in architecture and models; the author contributed a bit there—feel free to check it out.
86
92
 
87
93
  ---
@@ -104,7 +110,7 @@ To dive deeper, Jupyter notebooks are available:
104
110
  - [Hands on the NextRec framework](/tutorials/notebooks/en/Hands%20on%20nextrec.ipynb)
105
111
  - [Using the data processor for preprocessing](/tutorials/notebooks/en/Hands%20on%20dataprocessor.ipynb)
106
112
 
107
- > Current version [0.3.1]: the matching module is not fully polished yet and may have compatibility issues or unexpected errors. Please raise an issue if you run into problems.
113
+ > Current version [0.3.3]: the matching module is not fully polished yet and may have compatibility issues or unexpected errors. Please raise an issue if you run into problems.
108
114
 
109
115
  ## 5-Minute Quick Start
110
116
 
@@ -0,0 +1,57 @@
1
+ nextrec/__init__.py,sha256=CvocnY2uBp0cjNkhrT6ogw0q2bN9s1GNp754FLO-7lo,1117
2
+ nextrec/__version__.py,sha256=8KcCYTXH99C2-gCLuPILJvtT9YftRWJsartIx6TQ2ZY,22
3
+ nextrec/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ nextrec/basic/activation.py,sha256=1qs9pq4hT3BUxIiYdYs57axMCm4-JyOBFQ6x7xkHTwM,2849
5
+ nextrec/basic/callback.py,sha256=wwh0I2kKYyywCB-sG9eQXShlpXFJIo75qApJmnI5p6c,1036
6
+ nextrec/basic/features.py,sha256=-RRRbEPU-SFI-GtppflW6O0bKShUsV-Hg_lTGpo3AIE,4262
7
+ nextrec/basic/layers.py,sha256=zzEseKYVnMVs1Tg5EGrFimugId15jI6HumgzjFyRqgw,23127
8
+ nextrec/basic/loggers.py,sha256=VNed0LagpoPSUl2itW8hHT-BSqJHTlQY5pVxIVmm6AE,3733
9
+ nextrec/basic/metrics.py,sha256=8-hMZJXU5L4F8GnToxMZey5dlBrtFyRtTuI_zoQCtIo,21579
10
+ nextrec/basic/model.py,sha256=vtxPuGePgf7lFXItremzKIJmKe4pcSGEZ16TBLw7wcc,67059
11
+ nextrec/basic/session.py,sha256=oaATn-nzbJ9A6SGbMut9xLV_NSh9_1KmVDeNauS06Ps,4767
12
+ nextrec/data/__init__.py,sha256=6WgXZafzzXcv5kuxKNi67O8BJZVl_P_HM2IZCDIIhPA,1052
13
+ nextrec/data/data_utils.py,sha256=aOyja3Yu7O2c8eIeL3P8MyUlUR5EerOUT9UeF4ATq8o,10574
14
+ nextrec/data/dataloader.py,sha256=JsEVInyZ1nQXLAbRDPPN3Y47wOvWxHHOy-ikLa6sOrg,14211
15
+ nextrec/data/preprocessor.py,sha256=Mg0unoalwNsa_OIPq8myxj3rNCrHqfTwB1IpBCdXbnI,41734
16
+ nextrec/loss/__init__.py,sha256=mO5t417BneZ8Ysa51GyjDaffjWyjzFgPXIQrrggasaQ,827
17
+ nextrec/loss/listwise.py,sha256=gxDbO1td5IeS28jKzdE35o1KAYBRdCYoMzyZzfNLhc0,5689
18
+ nextrec/loss/loss_utils.py,sha256=uZ4m9ChLr-UgIc5Yxm1LjwXDDepApQ-Fas8njweZ9qg,2641
19
+ nextrec/loss/pairwise.py,sha256=MN_3Pk6Nj8KCkmUqGT5cmyx1_nQa3TIx_kxXT_HB58c,3396
20
+ nextrec/loss/pointwise.py,sha256=shgdRJwTV7vAnVxHSffOJU4TPQeKyrwudQ8y-R10nYM,7144
21
+ nextrec/models/generative/__init__.py,sha256=vo8-DloD74cKc1moSH-4GYG99w8Yi8YPGPxh8XDJPoc,50
22
+ nextrec/models/generative/hstu.py,sha256=CLu8Ee_L4fdnb7_DKocz0g7SZlPI1g_6o8HtyzRkI9s,16368
23
+ nextrec/models/generative/tiger.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ nextrec/models/match/__init__.py,sha256=ASZB5abqKPhDbk8NErNNNa0DHuWpsVxvUtyEn5XMx6Y,215
25
+ nextrec/models/match/dssm.py,sha256=1cj1Fb3yFTKxA1kRaomh_Q8y66vBZc85ywAIXWosyL0,8230
26
+ nextrec/models/match/dssm_v2.py,sha256=BY6m9651NlzMLjRa9oeez0dab_3NjNFVgYQ7Q39Ug74,7187
27
+ nextrec/models/match/mind.py,sha256=0cggXKE1-XsTZ6IX4UH81a5KycdGF-_ix2Nw-eKTLpg,14886
28
+ nextrec/models/match/sdm.py,sha256=wVRj6PWLF6hMIqqlJDUuKqxJAvCGPe-HfD3EVgd16Sw,10918
29
+ nextrec/models/match/youtube_dnn.py,sha256=Wa5JWrlIpMuBoyXpnBrdnm1nQ8ZO_XcR517zfINh-xA,7544
30
+ nextrec/models/multi_task/esmm.py,sha256=Ho5UN2H9H9-ZYML6eqpBYTVdTO4Ja9AoYP5SSgsgQaw,6442
31
+ nextrec/models/multi_task/mmoe.py,sha256=zfBAUoQijHCuat962dZI0MCAy8C6PZqZ-zOd16JznF8,7803
32
+ nextrec/models/multi_task/ple.py,sha256=zNBea0sfJska36RVH1N9O92m7rPmbaWYqoPbnGoy1RE,11949
33
+ nextrec/models/multi_task/poso.py,sha256=_yLiCkD3NhOZEOWx-jP4MJxSEdNCu3mqeo_XRt8CWts,16652
34
+ nextrec/models/multi_task/share_bottom.py,sha256=kvrkXQSTDPEwwmBvXw3xryBm3gT8Uq4_Hb3TenwRj9w,5920
35
+ nextrec/models/ranking/__init__.py,sha256=AY806x-2BtltQdlR4wu23-keL9YUe3An92OJshS4t9Y,472
36
+ nextrec/models/ranking/afm.py,sha256=uFSUIv9d6NQkCiM2epmSdMy4kxjFuCRVbrZOv3nebGE,4539
37
+ nextrec/models/ranking/autoint.py,sha256=MN6Dv6EMK0ODsCEeX4iXBSDoxK9a_DxIdEduGAUIVEQ,7771
38
+ nextrec/models/ranking/dcn.py,sha256=sy0v_kMQ1OfVCFuRD8FDrroQHm-RnTx4lVacfXfs2N8,4896
39
+ nextrec/models/ranking/dcn_v2.py,sha256=ivHwLRxi4VcNzh9DWQQ227Gw5dhyRZ5LezuqkAdD89o,3630
40
+ nextrec/models/ranking/deepfm.py,sha256=Dr4KoLGEWONKixzTRKk8kHXNYRZ-yoo2rVVRGZ5xrAU,4990
41
+ nextrec/models/ranking/dien.py,sha256=cybZk1mZMxYD1lgOSN6JovrQPjHmdQFSvWWv99NbLrk,12741
42
+ nextrec/models/ranking/din.py,sha256=72lRtQVLQAh7yeSqoS2nZ8b9jEiaQ4OsgJQkrK3fL4s,7195
43
+ nextrec/models/ranking/fibinet.py,sha256=9jHR0LrhtraBR2KNjNFEDNJLOChnKdyxAXx3JIRYXDg,4852
44
+ nextrec/models/ranking/fm.py,sha256=ickjW6cogKKxbAXt_wqVOG6xSkokP0zG4k9ZnK3t6YE,2960
45
+ nextrec/models/ranking/masknet.py,sha256=9K6XKcr8f8PcVhLfgFd8l4tq78lcclAQAXZKlVEjfiY,11504
46
+ nextrec/models/ranking/pnn.py,sha256=eEyBnALuzaNx27iGJ0ZqNcf0u7dKN8SiO03lkcv1hiE,4956
47
+ nextrec/models/ranking/widedeep.py,sha256=AJPkoThUTSBGPNBjD-aiWsMH2hSiSnGLjIPy_2neNhc,5034
48
+ nextrec/models/ranking/xdeepfm.py,sha256=wn6YnX78EyBzil7IRBcqyDqsnysERVJ5-lWGuRMCpxE,5681
49
+ nextrec/utils/__init__.py,sha256=ciw6B9SXffjSb4cwco-WXpKSE7M9D6ILpLZ2oftwj6A,457
50
+ nextrec/utils/common.py,sha256=NYXnBVtUCtm8epT2ZxJHn_m1SIBBI_PEjZ5VpL465ls,2009
51
+ nextrec/utils/embedding.py,sha256=yxYSdFx0cJITh3Gf-K4SdhwRtKGcI0jOsyBgZ0NLa_c,465
52
+ nextrec/utils/initializer.py,sha256=ffYOs5QuIns_d_-5e40iNtg6s1ftgREJN-ueq_NbDQE,1647
53
+ nextrec/utils/optimizer.py,sha256=EUjAGFPeyou_Cv-_2HRvjzut8y_qpAQudc8L2T0k8zw,2706
54
+ nextrec-0.3.3.dist-info/METADATA,sha256=MR4cHVPwRpyI0RBfooMTu2jZIUcPU-Ztp0AhGAMz37w,16319
55
+ nextrec-0.3.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
56
+ nextrec-0.3.3.dist-info/licenses/LICENSE,sha256=2fQfVKeafywkni7MYHyClC6RGGC3laLTXCNBx-ubtp0,1064
57
+ nextrec-0.3.3.dist-info/RECORD,,
@@ -1,56 +0,0 @@
1
- nextrec/__init__.py,sha256=CvocnY2uBp0cjNkhrT6ogw0q2bN9s1GNp754FLO-7lo,1117
2
- nextrec/__version__.py,sha256=r4xAFihOf72W9TD-lpMi6ntWSTKTP2SlzKP1ytkjRbI,22
3
- nextrec/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- nextrec/basic/activation.py,sha256=1qs9pq4hT3BUxIiYdYs57axMCm4-JyOBFQ6x7xkHTwM,2849
5
- nextrec/basic/callback.py,sha256=wwh0I2kKYyywCB-sG9eQXShlpXFJIo75qApJmnI5p6c,1036
6
- nextrec/basic/features.py,sha256=JtB63jqOIL7zZ5zoTgvEM4fEoqexMz0SMTmowTURk1I,4626
7
- nextrec/basic/layers.py,sha256=zIa8QsPkOOovjrMAUC94SfhSVTS4R_CXySBr5KAk6i4,24686
8
- nextrec/basic/loggers.py,sha256=TtTN5NIH8yqY27R2jXxQxfsTIA8XUBPJakx6Bl2ofhI,3724
9
- nextrec/basic/metrics.py,sha256=YFOaUexHJncc6sPbw2LF2sBnFp-3PLMrjR3aQbBDpGs,20891
10
- nextrec/basic/model.py,sha256=X1eH9XAxIQla-hVGKUxqEm7QyZucp_tIbx6FWYTa24M,73140
11
- nextrec/basic/session.py,sha256=oaATn-nzbJ9A6SGbMut9xLV_NSh9_1KmVDeNauS06Ps,4767
12
- nextrec/data/__init__.py,sha256=COaTyiARV7hEQTT3e74uyCBGmHFQ9rhe6g6Shc-Ualw,1064
13
- nextrec/data/data_utils.py,sha256=H-isIrs2FPyLSTe7IiFUkn6SQKfO0BkGKmj43C9yLGY,7602
14
- nextrec/data/dataloader.py,sha256=ySNTts03P8I1vq53HwsP0cg9QdkA0SGyazNJnEA5vfs,14668
15
- nextrec/data/preprocessor.py,sha256=MhQofbOcZLQCwsi335NTwDWsjQ0QbPIuzbzC0-ijAn4,41731
16
- nextrec/loss/__init__.py,sha256=mO5t417BneZ8Ysa51GyjDaffjWyjzFgPXIQrrggasaQ,827
17
- nextrec/loss/listwise.py,sha256=gxDbO1td5IeS28jKzdE35o1KAYBRdCYoMzyZzfNLhc0,5689
18
- nextrec/loss/loss_utils.py,sha256=uZ4m9ChLr-UgIc5Yxm1LjwXDDepApQ-Fas8njweZ9qg,2641
19
- nextrec/loss/pairwise.py,sha256=MN_3Pk6Nj8KCkmUqGT5cmyx1_nQa3TIx_kxXT_HB58c,3396
20
- nextrec/loss/pointwise.py,sha256=shgdRJwTV7vAnVxHSffOJU4TPQeKyrwudQ8y-R10nYM,7144
21
- nextrec/models/generative/hstu.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- nextrec/models/generative/tiger.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- nextrec/models/match/__init__.py,sha256=ASZB5abqKPhDbk8NErNNNa0DHuWpsVxvUtyEn5XMx6Y,215
24
- nextrec/models/match/dssm.py,sha256=e0hUqNLJVwTRVz4F4EiO8KLOOprKRBDtI4ID6Y1Tc60,8232
25
- nextrec/models/match/dssm_v2.py,sha256=ywtqTy3YN9ke_7kzcDp7Fhtldw9RJz6yfewxALJb6Z0,7189
26
- nextrec/models/match/mind.py,sha256=nDzy1owhXtci1_3yWddbnXIc4X5hsg2333uRt1jExZE,14888
27
- nextrec/models/match/sdm.py,sha256=96yfMQ6arP6JRhAkDTGEjlBiTteznMykrDV_3jqvvVk,10920
28
- nextrec/models/match/youtube_dnn.py,sha256=pnrz9LYu65Fj4neOriFF45B5k2-yYiiREtQICxxYXZ0,7546
29
- nextrec/models/multi_task/esmm.py,sha256=27eKtcDV7u-_89_h6aoEmTGhzGwpux3JVeHHbv8aQWE,6443
30
- nextrec/models/multi_task/mmoe.py,sha256=RDbwr66kO1vlgfREdRhUgsBYkblzJ2a_-p2oayqxRkE,7804
31
- nextrec/models/multi_task/ple.py,sha256=TCJOlgfetpueJa8LosEttOf43JPXXTsZh8t9PBoP4ek,11950
32
- nextrec/models/multi_task/poso.py,sha256=FIdbKRfNJJRlUMkSnrIjQkOLvNOT_x03oeUyPWbVh8I,16653
33
- nextrec/models/multi_task/share_bottom.py,sha256=3oJCQxVL2iIfba4pRiERaxmOp4d4cICtkOxLeoMqfgw,5921
34
- nextrec/models/ranking/__init__.py,sha256=AY806x-2BtltQdlR4wu23-keL9YUe3An92OJshS4t9Y,472
35
- nextrec/models/ranking/afm.py,sha256=r9m1nEnc0m5d4pMtOxRMqOaXaBNCEkjJBFB-5wSHeFA,4540
36
- nextrec/models/ranking/autoint.py,sha256=xKX-w7lkGHkTYgbAB4r-pqOfkOAUia7av4gvT38X6Lk,7772
37
- nextrec/models/ranking/dcn.py,sha256=30qvToJftZG7UCoS84Lf8GCqipjFmpZWMQgMWSx9cwQ,4897
38
- nextrec/models/ranking/dcn_v2.py,sha256=ivHwLRxi4VcNzh9DWQQ227Gw5dhyRZ5LezuqkAdD89o,3630
39
- nextrec/models/ranking/deepfm.py,sha256=oBifQnbwz2OhVG6XWX5k_PyOA-lbFhYdqDEm0XyuEds,4991
40
- nextrec/models/ranking/dien.py,sha256=mn_po2D1O3zdyvesQo0PXX6s2-TxhlVCxGtYX3jEq8g,12742
41
- nextrec/models/ranking/din.py,sha256=j5tkT5k91CbsMlMr5vJOySrcY2_rFGxmEgJJ0McW7-Q,7196
42
- nextrec/models/ranking/fibinet.py,sha256=X6CbQbritvq5jql_Tvs4bn_tRla2zpWPplftZv8k6f0,4853
43
- nextrec/models/ranking/fm.py,sha256=3Qx_Fgowegr6UPQtEeTmHtOrbWzkvqH94ZTjOqRLu-E,2961
44
- nextrec/models/ranking/masknet.py,sha256=IE8WZIl7gy282p66qSxaFaWXurPjPaqJh7hCNeOKCoQ,11506
45
- nextrec/models/ranking/pnn.py,sha256=5RxIKdxD0XcGq-b_QDdwGRwk6b_5BQjyMvCw3Ibv2Kk,4957
46
- nextrec/models/ranking/widedeep.py,sha256=6lZUDScOGnUJe3j4X0JPh1LSLTBERL54hZrQDysu_oU,5035
47
- nextrec/models/ranking/xdeepfm.py,sha256=inrJUfmvQAT-EubH9vY_inCirBggB18Kj-Pp8lHB2CA,5682
48
- nextrec/utils/__init__.py,sha256=A3mH6M-DmDBWQ1stIIaTsNzvUy_AKaUWtRmrzU5R3FE,429
49
- nextrec/utils/common.py,sha256=YTlJkFCvIH5ExiOvg5pNPdRLUQ-h60BX4xTliaXKDsE,1217
50
- nextrec/utils/embedding.py,sha256=yxYSdFx0cJITh3Gf-K4SdhwRtKGcI0jOsyBgZ0NLa_c,465
51
- nextrec/utils/initializer.py,sha256=ffYOs5QuIns_d_-5e40iNtg6s1ftgREJN-ueq_NbDQE,1647
52
- nextrec/utils/optimizer.py,sha256=85ifoy2IQgjPHOqLqr1ho7XBGE_0ry1yEB9efS6C2lM,2446
53
- nextrec-0.3.1.dist-info/METADATA,sha256=bYvcXVXbnD8hAW8Y-cVKj--ngfd1kCo36atLZFhszT8,15808
54
- nextrec-0.3.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
55
- nextrec-0.3.1.dist-info/licenses/LICENSE,sha256=2fQfVKeafywkni7MYHyClC6RGGC3laLTXCNBx-ubtp0,1064
56
- nextrec-0.3.1.dist-info/RECORD,,