nextrec 0.4.31__py3-none-any.whl → 0.4.33__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.
- nextrec/__version__.py +1 -1
- nextrec/basic/model.py +60 -12
- nextrec/basic/summary.py +2 -1
- nextrec/cli.py +56 -41
- nextrec/data/batch_utils.py +2 -2
- nextrec/data/preprocessor.py +125 -26
- nextrec/models/multi_task/[pre]aitm.py +3 -3
- nextrec/models/multi_task/[pre]snr_trans.py +3 -3
- nextrec/models/multi_task/[pre]star.py +3 -3
- nextrec/models/multi_task/apg.py +3 -3
- nextrec/models/multi_task/cross_stitch.py +3 -3
- nextrec/models/multi_task/escm.py +3 -3
- nextrec/models/multi_task/esmm.py +3 -3
- nextrec/models/multi_task/hmoe.py +3 -3
- nextrec/models/multi_task/mmoe.py +3 -3
- nextrec/models/multi_task/pepnet.py +4 -4
- nextrec/models/multi_task/ple.py +3 -3
- nextrec/models/multi_task/poso.py +3 -3
- nextrec/models/multi_task/share_bottom.py +3 -3
- nextrec/models/ranking/afm.py +3 -2
- nextrec/models/ranking/autoint.py +3 -2
- nextrec/models/ranking/dcn.py +3 -2
- nextrec/models/ranking/dcn_v2.py +3 -2
- nextrec/models/ranking/deepfm.py +3 -2
- nextrec/models/ranking/dien.py +3 -2
- nextrec/models/ranking/din.py +3 -2
- nextrec/models/ranking/eulernet.py +3 -2
- nextrec/models/ranking/ffm.py +3 -2
- nextrec/models/ranking/fibinet.py +3 -2
- nextrec/models/ranking/fm.py +3 -2
- nextrec/models/ranking/lr.py +3 -2
- nextrec/models/ranking/masknet.py +3 -2
- nextrec/models/ranking/pnn.py +3 -2
- nextrec/models/ranking/widedeep.py +3 -2
- nextrec/models/ranking/xdeepfm.py +3 -2
- nextrec/models/tree_base/__init__.py +15 -0
- nextrec/models/tree_base/base.py +693 -0
- nextrec/models/tree_base/catboost.py +97 -0
- nextrec/models/tree_base/lightgbm.py +69 -0
- nextrec/models/tree_base/xgboost.py +61 -0
- nextrec/utils/config.py +1 -0
- nextrec/utils/types.py +2 -0
- {nextrec-0.4.31.dist-info → nextrec-0.4.33.dist-info}/METADATA +5 -5
- {nextrec-0.4.31.dist-info → nextrec-0.4.33.dist-info}/RECORD +47 -42
- {nextrec-0.4.31.dist-info → nextrec-0.4.33.dist-info}/licenses/LICENSE +1 -1
- {nextrec-0.4.31.dist-info → nextrec-0.4.33.dist-info}/WHEEL +0 -0
- {nextrec-0.4.31.dist-info → nextrec-0.4.33.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""
|
|
2
|
+
CatBoost adapter for NextRec.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
import numpy as np
|
|
10
|
+
import pandas as pd
|
|
11
|
+
|
|
12
|
+
from nextrec.models.tree_base.base import TreeBaseModel
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Catboost(TreeBaseModel):
|
|
16
|
+
model_file_suffix = "cbm"
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def model_name(self) -> str:
|
|
20
|
+
return "catboost"
|
|
21
|
+
|
|
22
|
+
def build_estimator(self, model_params: dict[str, Any], epochs: int | None):
|
|
23
|
+
try:
|
|
24
|
+
import catboost as cb
|
|
25
|
+
except ModuleNotFoundError as exc: # pragma: no cover
|
|
26
|
+
raise ModuleNotFoundError(
|
|
27
|
+
"catboost is required for model='catboost'. Install with: pip install catboost"
|
|
28
|
+
) from exc
|
|
29
|
+
params = dict(model_params)
|
|
30
|
+
if epochs is not None and "iterations" not in params:
|
|
31
|
+
params["iterations"] = epochs
|
|
32
|
+
task = self.task[0] if isinstance(self.task, list) else self.task
|
|
33
|
+
if task == "regression":
|
|
34
|
+
params.setdefault("loss_function", "RMSE")
|
|
35
|
+
return cb.CatBoostRegressor(**params)
|
|
36
|
+
if task == "binary":
|
|
37
|
+
params.setdefault("loss_function", "Logloss")
|
|
38
|
+
return cb.CatBoostClassifier(**params)
|
|
39
|
+
raise ValueError(f"[catboost-init Error] Unsupported task type: {task}")
|
|
40
|
+
|
|
41
|
+
def fit_estimator(
|
|
42
|
+
self,
|
|
43
|
+
model: Any,
|
|
44
|
+
X_train,
|
|
45
|
+
y_train,
|
|
46
|
+
X_valid,
|
|
47
|
+
y_valid,
|
|
48
|
+
cat_features,
|
|
49
|
+
**kwargs,
|
|
50
|
+
):
|
|
51
|
+
fit_kwargs = dict(kwargs)
|
|
52
|
+
X_train, cat_features = self._prepare_catboost_data(X_train, cat_features)
|
|
53
|
+
if cat_features:
|
|
54
|
+
fit_kwargs.setdefault("cat_features", cat_features)
|
|
55
|
+
if X_valid is not None and y_valid is not None:
|
|
56
|
+
X_valid, _ = self._prepare_catboost_data(X_valid, cat_features)
|
|
57
|
+
fit_kwargs.setdefault("eval_set", (X_valid, y_valid))
|
|
58
|
+
model.fit(X_train, y_train, **fit_kwargs)
|
|
59
|
+
return model
|
|
60
|
+
|
|
61
|
+
def save_model_file(self, model: Any, path) -> None:
|
|
62
|
+
model.save_model(str(path))
|
|
63
|
+
|
|
64
|
+
def load_model_file(self, path):
|
|
65
|
+
model = self.build_estimator(dict(self.model_params), epochs=None)
|
|
66
|
+
model.load_model(str(path))
|
|
67
|
+
return model
|
|
68
|
+
|
|
69
|
+
def _prepare_catboost_data(
|
|
70
|
+
self, X: Any, cat_features: list[int]
|
|
71
|
+
) -> tuple[Any, list[int]]:
|
|
72
|
+
if not cat_features:
|
|
73
|
+
return X, cat_features
|
|
74
|
+
if isinstance(X, np.ndarray) and np.issubdtype(X.dtype, np.floating):
|
|
75
|
+
feature_names = [f"f{idx}" for idx in range(X.shape[1])]
|
|
76
|
+
df = pd.DataFrame(X, columns=feature_names)
|
|
77
|
+
for idx in cat_features:
|
|
78
|
+
if 0 <= idx < df.shape[1]:
|
|
79
|
+
series = df.iloc[:, idx]
|
|
80
|
+
df.iloc[:, idx] = series.map(
|
|
81
|
+
lambda value: (
|
|
82
|
+
""
|
|
83
|
+
if pd.isna(value)
|
|
84
|
+
else (
|
|
85
|
+
str(int(value))
|
|
86
|
+
if isinstance(value, (float, np.floating))
|
|
87
|
+
and value.is_integer()
|
|
88
|
+
else str(value)
|
|
89
|
+
)
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
return df, cat_features
|
|
93
|
+
return X, cat_features
|
|
94
|
+
|
|
95
|
+
def predict_scores(self, model: Any, X: np.ndarray) -> np.ndarray:
|
|
96
|
+
X, _ = self._prepare_catboost_data(X, self._cat_feature_indices)
|
|
97
|
+
return super().predict_scores(model, X)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""
|
|
2
|
+
LightGBM adapter for NextRec.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
from nextrec.models.tree_base.base import TreeBaseModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Lightgbm(TreeBaseModel):
|
|
13
|
+
model_file_suffix = "txt"
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def model_name(self) -> str:
|
|
17
|
+
return "lightgbm"
|
|
18
|
+
|
|
19
|
+
def build_estimator(self, model_params: dict[str, Any], epochs: int | None):
|
|
20
|
+
try:
|
|
21
|
+
import lightgbm as lgb
|
|
22
|
+
except ModuleNotFoundError as exc: # pragma: no cover
|
|
23
|
+
raise ModuleNotFoundError(
|
|
24
|
+
"lightgbm is required for model='lightgbm'. Install with: pip install lightgbm"
|
|
25
|
+
) from exc
|
|
26
|
+
params = dict(model_params)
|
|
27
|
+
if epochs is not None and "n_estimators" not in params:
|
|
28
|
+
params["n_estimators"] = epochs
|
|
29
|
+
task = self.task[0] if isinstance(self.task, list) else self.task
|
|
30
|
+
if task == "regression":
|
|
31
|
+
params.setdefault("objective", "regression")
|
|
32
|
+
return lgb.LGBMRegressor(**params)
|
|
33
|
+
if task == "binary":
|
|
34
|
+
params.setdefault("objective", "binary")
|
|
35
|
+
return lgb.LGBMClassifier(**params)
|
|
36
|
+
raise ValueError(f"[lightgbm-init Error] Unsupported task type: {task}")
|
|
37
|
+
|
|
38
|
+
def fit_estimator(
|
|
39
|
+
self,
|
|
40
|
+
model: Any,
|
|
41
|
+
X_train,
|
|
42
|
+
y_train,
|
|
43
|
+
X_valid,
|
|
44
|
+
y_valid,
|
|
45
|
+
cat_features,
|
|
46
|
+
**kwargs,
|
|
47
|
+
):
|
|
48
|
+
fit_kwargs = dict(kwargs)
|
|
49
|
+
if cat_features:
|
|
50
|
+
fit_kwargs.setdefault("categorical_feature", cat_features)
|
|
51
|
+
if X_valid is not None and y_valid is not None:
|
|
52
|
+
fit_kwargs.setdefault("eval_set", [(X_valid, y_valid)])
|
|
53
|
+
model.fit(X_train, y_train, **fit_kwargs)
|
|
54
|
+
return model
|
|
55
|
+
|
|
56
|
+
def save_model_file(self, model: Any, path) -> None:
|
|
57
|
+
if hasattr(model, "booster_"):
|
|
58
|
+
model.booster_.save_model(str(path))
|
|
59
|
+
else:
|
|
60
|
+
model.save_model(str(path))
|
|
61
|
+
|
|
62
|
+
def load_model_file(self, path):
|
|
63
|
+
try:
|
|
64
|
+
import lightgbm as lgb
|
|
65
|
+
except ModuleNotFoundError as exc: # pragma: no cover
|
|
66
|
+
raise ModuleNotFoundError(
|
|
67
|
+
"lightgbm is required for model='lightgbm'. Install with: pip install lightgbm"
|
|
68
|
+
) from exc
|
|
69
|
+
return lgb.Booster(model_file=str(path))
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""
|
|
2
|
+
XGBoost adapter for NextRec.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
from nextrec.models.tree_base.base import TreeBaseModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Xgboost(TreeBaseModel):
|
|
13
|
+
model_file_suffix = "json"
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def model_name(self) -> str:
|
|
17
|
+
return "xgboost"
|
|
18
|
+
|
|
19
|
+
def build_estimator(self, model_params: dict[str, Any], epochs: int | None):
|
|
20
|
+
try:
|
|
21
|
+
import xgboost as xgb
|
|
22
|
+
except ModuleNotFoundError as exc: # pragma: no cover
|
|
23
|
+
raise ModuleNotFoundError(
|
|
24
|
+
"xgboost is required for model='xgboost'. Install with: pip install xgboost"
|
|
25
|
+
) from exc
|
|
26
|
+
params = dict(model_params)
|
|
27
|
+
if epochs is not None and "n_estimators" not in params:
|
|
28
|
+
params["n_estimators"] = epochs
|
|
29
|
+
task = self.task[0] if isinstance(self.task, list) else self.task
|
|
30
|
+
if task == "regression":
|
|
31
|
+
params.setdefault("objective", "reg:squarederror")
|
|
32
|
+
return xgb.XGBRegressor(**params)
|
|
33
|
+
if task == "binary":
|
|
34
|
+
params.setdefault("objective", "binary:logistic")
|
|
35
|
+
return xgb.XGBClassifier(**params)
|
|
36
|
+
raise ValueError(f"[xgboost-init Error] Unsupported task type: {task}")
|
|
37
|
+
|
|
38
|
+
def fit_estimator(
|
|
39
|
+
self,
|
|
40
|
+
model: Any,
|
|
41
|
+
X_train,
|
|
42
|
+
y_train,
|
|
43
|
+
X_valid,
|
|
44
|
+
y_valid,
|
|
45
|
+
cat_features,
|
|
46
|
+
**kwargs,
|
|
47
|
+
):
|
|
48
|
+
del cat_features # xgboost handles categorical features via params
|
|
49
|
+
fit_kwargs = dict(kwargs)
|
|
50
|
+
if X_valid is not None and y_valid is not None:
|
|
51
|
+
fit_kwargs.setdefault("eval_set", [(X_valid, y_valid)])
|
|
52
|
+
model.fit(X_train, y_train, **fit_kwargs)
|
|
53
|
+
return model
|
|
54
|
+
|
|
55
|
+
def save_model_file(self, model: Any, path) -> None:
|
|
56
|
+
model.save_model(str(path))
|
|
57
|
+
|
|
58
|
+
def load_model_file(self, path):
|
|
59
|
+
model = self.build_estimator(dict(self.model_params), epochs=None)
|
|
60
|
+
model.load_model(str(path))
|
|
61
|
+
return model
|
nextrec/utils/config.py
CHANGED
|
@@ -342,6 +342,7 @@ def load_model_class(model_cfg: Dict[str, Any], base_dir: Path) -> type:
|
|
|
342
342
|
f"nextrec.models.match.{name.lower()}",
|
|
343
343
|
f"nextrec.models.multi_task.{name.lower()}",
|
|
344
344
|
f"nextrec.models.generative.{name.lower()}",
|
|
345
|
+
f"nextrec.models.tree_base.{name.lower()}",
|
|
345
346
|
]
|
|
346
347
|
errors = []
|
|
347
348
|
|
nextrec/utils/types.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nextrec
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.33
|
|
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
|
|
@@ -69,7 +69,7 @@ Description-Content-Type: text/markdown
|
|
|
69
69
|

|
|
70
70
|

|
|
71
71
|

|
|
72
|
-

|
|
73
73
|
[](https://deepwiki.com/zerolovesea/NextRec)
|
|
74
74
|
|
|
75
75
|
中文文档 | [English Version](README_en.md)
|
|
@@ -254,11 +254,11 @@ nextrec --mode=predict --predict_config=path/to/predict_config.yaml
|
|
|
254
254
|
|
|
255
255
|
预测结果固定保存到 `{checkpoint_path}/predictions/{name}.{save_data_format}`。
|
|
256
256
|
|
|
257
|
-
> 截止当前版本0.4.
|
|
257
|
+
> 截止当前版本0.4.33,NextRec CLI支持单机训练,分布式训练相关功能尚在开发中。
|
|
258
258
|
|
|
259
259
|
## 兼容平台
|
|
260
260
|
|
|
261
|
-
当前最新版本为0.4.
|
|
261
|
+
当前最新版本为0.4.33,所有模型和测试代码均已在以下平台通过验证,如果开发者在使用中遇到兼容问题,请在issue区提出错误报告及系统版本:
|
|
262
262
|
|
|
263
263
|
| 平台 | 配置 |
|
|
264
264
|
|------|------|
|
|
@@ -400,7 +400,7 @@ NextRec 的开发受到以下优秀项目的启发:
|
|
|
400
400
|
@misc{nextrec,
|
|
401
401
|
title = {NextRec},
|
|
402
402
|
author = {Yang Zhou},
|
|
403
|
-
year = {
|
|
403
|
+
year = {2026},
|
|
404
404
|
publisher = {GitHub},
|
|
405
405
|
journal = {GitHub repository},
|
|
406
406
|
howpublished = {\url{https://github.com/zerolovesea/NextRec}},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
nextrec/__init__.py,sha256=_M3oUqyuvQ5k8Th_3wId6hQ_caclh7M5ad51XN09m98,235
|
|
2
|
-
nextrec/__version__.py,sha256=
|
|
3
|
-
nextrec/cli.py,sha256=
|
|
2
|
+
nextrec/__version__.py,sha256=O_0xE0g6EcJfkv7qWx5tmF2cs2K3UCW8uX8xzUqd7Rs,23
|
|
3
|
+
nextrec/cli.py,sha256=k7gOrPfb3zmyUDxZipUNCFn-PaKCwUKbyJHhgpt-lyc,25673
|
|
4
4
|
nextrec/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
nextrec/basic/activation.py,sha256=uekcJsOy8SiT0_NaDO2VNSStyYFzVikDFVLDk-VrjwQ,2949
|
|
6
6
|
nextrec/basic/asserts.py,sha256=U1EKovV_OT7_Mm99zFvdfF2hccFREp3gdDaeRjfiBwQ,2249
|
|
@@ -10,15 +10,15 @@ nextrec/basic/heads.py,sha256=BshykLxD41KxKuZaBxf4Fmy1Mc52b3ioJliN1BVaGlk,3374
|
|
|
10
10
|
nextrec/basic/layers.py,sha256=tr8XFOcTvUHEZ6T3zJwmtKMA-u_xfzHloIkItGs821U,40084
|
|
11
11
|
nextrec/basic/loggers.py,sha256=LAfnhdSNEzHybrXaKxCWoAML1c2A-FJF6atpfrrm_Kw,13840
|
|
12
12
|
nextrec/basic/metrics.py,sha256=CPzENDcpO6QTDZLBtQlfAGKUYYQc0FT-eaMKJ4MURFo,23396
|
|
13
|
-
nextrec/basic/model.py,sha256=
|
|
13
|
+
nextrec/basic/model.py,sha256=Psm1lfAScyDmkK-TmA7pjvI_Hg1IkZ02XgnqJVmvwyw,111699
|
|
14
14
|
nextrec/basic/session.py,sha256=mrIsjRJhmvcAfoO1pXX-KB3SK5CCgz89wH8XDoAiGEI,4475
|
|
15
|
-
nextrec/basic/summary.py,sha256=
|
|
15
|
+
nextrec/basic/summary.py,sha256=MkzFwWJH3K76O0Gxqm3rVfbmWHqokvK2OBDe7WFQymo,17780
|
|
16
16
|
nextrec/data/__init__.py,sha256=YZQjpty1pDCM7q_YNmiA2sa5kbujUw26ObLHWjMPjKY,1194
|
|
17
|
-
nextrec/data/batch_utils.py,sha256=
|
|
17
|
+
nextrec/data/batch_utils.py,sha256=TbnXYqYlmK51dJthaL6dO7LTn4wyp8221I-kdgvpvDE,3542
|
|
18
18
|
nextrec/data/data_processing.py,sha256=lhuwYxWp4Ts2bbuLGDt2LmuPrOy7pNcKczd2uVcQ4ss,6476
|
|
19
19
|
nextrec/data/data_utils.py,sha256=0Ls1cnG9lBz0ovtyedw5vwp7WegGK_iF-F8e_3DEddo,880
|
|
20
20
|
nextrec/data/dataloader.py,sha256=2sXwoiWxupKE-V1QYeZlXjK1yJyxhDtlOhknAnJF8Wk,19727
|
|
21
|
-
nextrec/data/preprocessor.py,sha256=
|
|
21
|
+
nextrec/data/preprocessor.py,sha256=vZR7GnVALHMjQ3d-Bvd0mtkKj0nrkzndMib3vHY570Q,68496
|
|
22
22
|
nextrec/loss/__init__.py,sha256=rualGsY-IBvmM52q9eOBk0MyKcMkpkazcscOeDXi_SM,774
|
|
23
23
|
nextrec/loss/grad_norm.py,sha256=YoE_XSIN1HOUcNq1dpfkIlWtMaB5Pu-SEWDaNgtRw1M,8316
|
|
24
24
|
nextrec/loss/listwise.py,sha256=mluxXQt9XiuWGvXA1nk4I0miqaKB6_GPVQqxLhAiJKs,5999
|
|
@@ -26,37 +26,37 @@ nextrec/loss/pairwise.py,sha256=9fyH9p2u-N0-jAnNTq3X5Dje0ipj1dob8wp-yQKRra4,3493
|
|
|
26
26
|
nextrec/loss/pointwise.py,sha256=09nzI1L5eP9raXnj3Q49bD9Clp_JmsSWUvEj7bkTzSw,7474
|
|
27
27
|
nextrec/models/generative/__init__.py,sha256=0MV3P-_ainPaTxmRBGWKUVCEt14KJvuvEHmRB3OQ1Fs,176
|
|
28
28
|
nextrec/models/generative/tiger.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
nextrec/models/multi_task/[pre]aitm.py,sha256=
|
|
30
|
-
nextrec/models/multi_task/[pre]snr_trans.py,sha256=
|
|
31
|
-
nextrec/models/multi_task/[pre]star.py,sha256=
|
|
29
|
+
nextrec/models/multi_task/[pre]aitm.py,sha256=A2n0T4JEui-uHgbqITU5lpsmtnP14fQXRZM1peTPvhQ,6661
|
|
30
|
+
nextrec/models/multi_task/[pre]snr_trans.py,sha256=k08tC-TI--a_Tt4_BmX0ZubzntyqwsejutYzbB5F4S4,9077
|
|
31
|
+
nextrec/models/multi_task/[pre]star.py,sha256=BczXHPJtK7xyPbLO0fQ-w7qnzaBvLpyhG0CKMBUItCY,7057
|
|
32
32
|
nextrec/models/multi_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
-
nextrec/models/multi_task/apg.py,sha256=
|
|
34
|
-
nextrec/models/multi_task/cross_stitch.py,sha256=
|
|
35
|
-
nextrec/models/multi_task/escm.py,sha256=
|
|
36
|
-
nextrec/models/multi_task/esmm.py,sha256=
|
|
37
|
-
nextrec/models/multi_task/hmoe.py,sha256=
|
|
38
|
-
nextrec/models/multi_task/mmoe.py,sha256=
|
|
39
|
-
nextrec/models/multi_task/pepnet.py,sha256=
|
|
40
|
-
nextrec/models/multi_task/ple.py,sha256=
|
|
41
|
-
nextrec/models/multi_task/poso.py,sha256=
|
|
42
|
-
nextrec/models/multi_task/share_bottom.py,sha256=
|
|
33
|
+
nextrec/models/multi_task/apg.py,sha256=dNveyottpHTd811_3KVZQQqgffDzmX_rY1EMiv1oKeo,13536
|
|
34
|
+
nextrec/models/multi_task/cross_stitch.py,sha256=o48ZZFKWXz-w4MWboVdxDxifM0V3_n2Is2nZ2HoJkfw,9441
|
|
35
|
+
nextrec/models/multi_task/escm.py,sha256=9kc50zzFm3HJMhQDqt6kAAJQTt0hKM5luLSC9G4N7Vk,11038
|
|
36
|
+
nextrec/models/multi_task/esmm.py,sha256=iTRMcjCznyKlwJMGWgqXl9CkQrvGTsfjEjpU_5X12Kg,5275
|
|
37
|
+
nextrec/models/multi_task/hmoe.py,sha256=Ge0AC7oLcEwvt75AwGG5MtClCX6L46H7HRDqD9h-kpQ,7584
|
|
38
|
+
nextrec/models/multi_task/mmoe.py,sha256=vc19O4N4_64-_oucOGI-P_LaxsQaGvrYGg5Z2sxP49w,7609
|
|
39
|
+
nextrec/models/multi_task/pepnet.py,sha256=I0MXLXAKBRTN1Vp1QOZD47IrljDDB3UOPHZYUH1cghU,13526
|
|
40
|
+
nextrec/models/multi_task/ple.py,sha256=tr8mendvt87u7a4P54lQBYCHtsWDae7VrN9fOqHcXXo,12154
|
|
41
|
+
nextrec/models/multi_task/poso.py,sha256=jr-RaLl5UnZc1HcEIK3HrNnc_g17BImyJb43d4rEXpE,18218
|
|
42
|
+
nextrec/models/multi_task/share_bottom.py,sha256=NYK2B9k7BaXxzX4VN3dE0_quwsOQGM7JElm2tBdb9MY,5237
|
|
43
43
|
nextrec/models/ranking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
-
nextrec/models/ranking/afm.py,sha256=
|
|
45
|
-
nextrec/models/ranking/autoint.py,sha256=
|
|
46
|
-
nextrec/models/ranking/dcn.py,sha256=
|
|
47
|
-
nextrec/models/ranking/dcn_v2.py,sha256=
|
|
48
|
-
nextrec/models/ranking/deepfm.py,sha256=
|
|
49
|
-
nextrec/models/ranking/dien.py,sha256=
|
|
50
|
-
nextrec/models/ranking/din.py,sha256=
|
|
51
|
-
nextrec/models/ranking/eulernet.py,sha256=
|
|
52
|
-
nextrec/models/ranking/ffm.py,sha256=
|
|
53
|
-
nextrec/models/ranking/fibinet.py,sha256=
|
|
54
|
-
nextrec/models/ranking/fm.py,sha256=
|
|
55
|
-
nextrec/models/ranking/lr.py,sha256=
|
|
56
|
-
nextrec/models/ranking/masknet.py,sha256=
|
|
57
|
-
nextrec/models/ranking/pnn.py,sha256=
|
|
58
|
-
nextrec/models/ranking/widedeep.py,sha256=
|
|
59
|
-
nextrec/models/ranking/xdeepfm.py,sha256=
|
|
44
|
+
nextrec/models/ranking/afm.py,sha256=2IylgCi7DBZzF7bdWFWvsEBlnRmyradxdyJiz5P4Nwg,9397
|
|
45
|
+
nextrec/models/ranking/autoint.py,sha256=5g0tMtvkt3FiCjqmU76K7w7z-h3nMJbP0eVt5Ph4bbU,7259
|
|
46
|
+
nextrec/models/ranking/dcn.py,sha256=qG3O2oL9ZLu9NBOJST06JeEh0k6UTXs-X1mQe_H4QCE,6679
|
|
47
|
+
nextrec/models/ranking/dcn_v2.py,sha256=807wASeG56WYD7mEDEKaERw3r-Jpas6WhDzO0HGEk9I,10382
|
|
48
|
+
nextrec/models/ranking/deepfm.py,sha256=1fuc-9f8DKDUH7EAY-XX5lITJ7Qw7ge6PTWFfQ7wld8,4404
|
|
49
|
+
nextrec/models/ranking/dien.py,sha256=cluW44zOBHadf3oup6h7MpTexDXjH_VPkYcqsNBT80Y,18361
|
|
50
|
+
nextrec/models/ranking/din.py,sha256=J6-S72_KJYLrzUmdrh6aAx-Qc1C08ZY7lY_KFtAkJz0,8855
|
|
51
|
+
nextrec/models/ranking/eulernet.py,sha256=0nOBfccfvukSZLUNOCcB_azCh52DGJq-s9doyEGMN8E,11484
|
|
52
|
+
nextrec/models/ranking/ffm.py,sha256=v15x2-rExcrEYdcPf2IxEgx-ImDSevhkhi4Oe4GbloY,10512
|
|
53
|
+
nextrec/models/ranking/fibinet.py,sha256=ejR1vNh5XM23SD7mfT686kuv3cmf5gKfkj0z_iMQqNA,7283
|
|
54
|
+
nextrec/models/ranking/fm.py,sha256=SlFtbtnrZbeRnCHf-kUAMaeLV_wDgLiaBwPGeAO_ycM,3795
|
|
55
|
+
nextrec/models/ranking/lr.py,sha256=0gmqPED-z7k4WVRy11WSLhYfS4bJQPRQTzQbe-rUITg,3227
|
|
56
|
+
nextrec/models/ranking/masknet.py,sha256=brRh8r-3TqJ9aNGj2JggAB9kUfD2xff6UmTYNd96YU4,11606
|
|
57
|
+
nextrec/models/ranking/pnn.py,sha256=NU537ySMMXtndtPuiwCCQhZhBpGk6X6PRDa55GFdqt0,7548
|
|
58
|
+
nextrec/models/ranking/widedeep.py,sha256=i37lqEUZUtxNXSkkhQjBF9QP6yreGdV_jcphofHOzW4,4267
|
|
59
|
+
nextrec/models/ranking/xdeepfm.py,sha256=vqDZRlrY9tgoqvnTXWe8xUbFx_28VztgVVc6ukzevRc,7507
|
|
60
60
|
nextrec/models/representation/__init__.py,sha256=O3QHMMXBszwM-mTl7bA3wawNZvDGet-QIv6Ys5GHGJ8,190
|
|
61
61
|
nextrec/models/representation/autorec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
62
|
nextrec/models/representation/bpr.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -73,8 +73,13 @@ nextrec/models/retrieval/sdm.py,sha256=1Y2gidG7WKuuGFaaQ8BcBGhQYoyyLPyhpRTo_xE1p
|
|
|
73
73
|
nextrec/models/retrieval/youtube_dnn.py,sha256=hLyR4liuusJIjRg4vuaSoSEecYgDICipXnNFiA3o3oY,6351
|
|
74
74
|
nextrec/models/sequential/hstu.py,sha256=iZcYLp44r23nHYNhGwD25JfH85DBrFwHOTg1WpHvLe8,18983
|
|
75
75
|
nextrec/models/sequential/sasrec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
+
nextrec/models/tree_base/__init__.py,sha256=ssGpU1viVidr1tgKCyvmkUXe32bUmwb5qPEkTh7ce70,342
|
|
77
|
+
nextrec/models/tree_base/base.py,sha256=6aXYM_nA1XkKfo3KfWSYBoO6IqPIafLrdzJ334ZBaZY,26558
|
|
78
|
+
nextrec/models/tree_base/catboost.py,sha256=hXINyx7iianwDxOZx3SLm0i-YP1jiC3HcAeqP9A2i4A,3434
|
|
79
|
+
nextrec/models/tree_base/lightgbm.py,sha256=VilMU7SgfHR5LAaaoQo-tY1vkzpSvWovIrgaSeuJ1-A,2263
|
|
80
|
+
nextrec/models/tree_base/xgboost.py,sha256=thOmDIC_nitno_k2mcH2cj2VcS07f9veTG01FMOO-28,1957
|
|
76
81
|
nextrec/utils/__init__.py,sha256=Td-TC1IoTeb0KV-EgPy_vTHmmxmE6tO9q7Gmgsk1p-A,2672
|
|
77
|
-
nextrec/utils/config.py,sha256=
|
|
82
|
+
nextrec/utils/config.py,sha256=SUKVgWrsCkJvKLBwcHQHls859jhdPzXk7_3DYoyIXzE,20481
|
|
78
83
|
nextrec/utils/console.py,sha256=RA3ZTjtUQXvueouSmXJNLkRjeUGQZesphwWjFMTbV4I,13577
|
|
79
84
|
nextrec/utils/data.py,sha256=pSL96mWjWfW_RKE-qlUSs9vfiYnFZAaRirzA6r7DB6s,24994
|
|
80
85
|
nextrec/utils/embedding.py,sha256=akAEc062MG2cD7VIOllHaqtwzAirQR2gq5iW7oKpGAU,1449
|
|
@@ -82,9 +87,9 @@ nextrec/utils/feature.py,sha256=E3NOFIW8gAoRXVrDhCSonzg8k7nMUZyZzMfCq9k73_A,623
|
|
|
82
87
|
nextrec/utils/loss.py,sha256=GBWQGpDaYkMJySpdG078XbeUNXUC34PVqFy0AqNS9N0,4578
|
|
83
88
|
nextrec/utils/model.py,sha256=PI9y8oWz1lhktgapZsiXb8rTr2NrFFlc80tr4yOFHik,5334
|
|
84
89
|
nextrec/utils/torch_utils.py,sha256=UQpWS7F3nITYqvx2KRBaQJc9oTowRkIvowhuQLt6NFM,11953
|
|
85
|
-
nextrec/utils/types.py,sha256=
|
|
86
|
-
nextrec-0.4.
|
|
87
|
-
nextrec-0.4.
|
|
88
|
-
nextrec-0.4.
|
|
89
|
-
nextrec-0.4.
|
|
90
|
-
nextrec-0.4.
|
|
90
|
+
nextrec/utils/types.py,sha256=G88DHXFv-mbg-XY-7Xwwh1qvh6WM9jpAsBjw5VuBcio,1559
|
|
91
|
+
nextrec-0.4.33.dist-info/METADATA,sha256=f9PQhSjuU2I32jNDBnVA5YA7K0yiTgnrV0S3QVPSHQU,23188
|
|
92
|
+
nextrec-0.4.33.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
93
|
+
nextrec-0.4.33.dist-info/entry_points.txt,sha256=NN-dNSdfMRTv86bNXM7d3ZEPW2BQC6bRi7QP7i9cIps,45
|
|
94
|
+
nextrec-0.4.33.dist-info/licenses/LICENSE,sha256=COP1BsqnEUwdx6GCkMjxOo5v3pUe4-Go_CdmQmSfYXM,1064
|
|
95
|
+
nextrec-0.4.33.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|