nextrec 0.4.21__py3-none-any.whl → 0.4.23__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/activation.py +1 -1
- nextrec/basic/heads.py +2 -3
- nextrec/basic/metrics.py +1 -2
- nextrec/basic/model.py +115 -80
- nextrec/basic/summary.py +36 -2
- nextrec/data/preprocessor.py +137 -5
- nextrec/loss/__init__.py +0 -4
- nextrec/loss/grad_norm.py +3 -3
- nextrec/loss/listwise.py +19 -6
- nextrec/loss/pairwise.py +6 -4
- nextrec/loss/pointwise.py +8 -6
- nextrec/models/multi_task/esmm.py +3 -26
- nextrec/models/multi_task/mmoe.py +2 -24
- nextrec/models/multi_task/ple.py +13 -35
- nextrec/models/multi_task/poso.py +4 -28
- nextrec/models/multi_task/share_bottom.py +1 -24
- nextrec/models/ranking/afm.py +3 -27
- nextrec/models/ranking/autoint.py +5 -38
- nextrec/models/ranking/dcn.py +1 -26
- nextrec/models/ranking/dcn_v2.py +5 -33
- nextrec/models/ranking/deepfm.py +2 -29
- nextrec/models/ranking/dien.py +2 -28
- nextrec/models/ranking/din.py +2 -27
- nextrec/models/ranking/eulernet.py +3 -30
- nextrec/models/ranking/ffm.py +0 -26
- nextrec/models/ranking/fibinet.py +8 -32
- nextrec/models/ranking/fm.py +0 -29
- nextrec/models/ranking/lr.py +0 -30
- nextrec/models/ranking/masknet.py +4 -30
- nextrec/models/ranking/pnn.py +4 -28
- nextrec/models/ranking/widedeep.py +0 -32
- nextrec/models/ranking/xdeepfm.py +0 -30
- nextrec/models/retrieval/dssm.py +0 -24
- nextrec/models/retrieval/dssm_v2.py +0 -24
- nextrec/models/retrieval/mind.py +0 -20
- nextrec/models/retrieval/sdm.py +0 -20
- nextrec/models/retrieval/youtube_dnn.py +0 -21
- nextrec/models/sequential/hstu.py +0 -18
- nextrec/utils/__init__.py +5 -1
- nextrec/{loss/loss_utils.py → utils/loss.py} +17 -7
- nextrec/utils/model.py +79 -1
- nextrec/utils/types.py +62 -23
- {nextrec-0.4.21.dist-info → nextrec-0.4.23.dist-info}/METADATA +8 -6
- nextrec-0.4.23.dist-info/RECORD +81 -0
- nextrec-0.4.21.dist-info/RECORD +0 -81
- {nextrec-0.4.21.dist-info → nextrec-0.4.23.dist-info}/WHEEL +0 -0
- {nextrec-0.4.21.dist-info → nextrec-0.4.23.dist-info}/entry_points.txt +0 -0
- {nextrec-0.4.21.dist-info → nextrec-0.4.23.dist-info}/licenses/LICENSE +0 -0
nextrec/models/retrieval/mind.py
CHANGED
|
@@ -206,17 +206,6 @@ class MIND(BaseMatchModel):
|
|
|
206
206
|
dense_l1_reg=0.0,
|
|
207
207
|
embedding_l2_reg=0.0,
|
|
208
208
|
dense_l2_reg=0.0,
|
|
209
|
-
optimizer: str | torch.optim.Optimizer = "adam",
|
|
210
|
-
optimizer_params: dict | None = None,
|
|
211
|
-
scheduler: (
|
|
212
|
-
str
|
|
213
|
-
| torch.optim.lr_scheduler._LRScheduler
|
|
214
|
-
| type[torch.optim.lr_scheduler._LRScheduler]
|
|
215
|
-
| None
|
|
216
|
-
) = None,
|
|
217
|
-
scheduler_params: dict | None = None,
|
|
218
|
-
loss: str | nn.Module | list[str | nn.Module] | None = "bce",
|
|
219
|
-
loss_params: dict | list[dict] | None = None,
|
|
220
209
|
**kwargs,
|
|
221
210
|
):
|
|
222
211
|
|
|
@@ -322,15 +311,6 @@ class MIND(BaseMatchModel):
|
|
|
322
311
|
include_modules=["item_dnn"] if self.item_dnn else [],
|
|
323
312
|
)
|
|
324
313
|
|
|
325
|
-
self.compile(
|
|
326
|
-
optimizer=optimizer,
|
|
327
|
-
optimizer_params=optimizer_params,
|
|
328
|
-
scheduler=scheduler,
|
|
329
|
-
scheduler_params=scheduler_params,
|
|
330
|
-
loss=loss,
|
|
331
|
-
loss_params=loss_params,
|
|
332
|
-
)
|
|
333
|
-
|
|
334
314
|
def user_tower(self, user_input: dict) -> torch.Tensor:
|
|
335
315
|
"""
|
|
336
316
|
User tower with multi-interest extraction
|
nextrec/models/retrieval/sdm.py
CHANGED
|
@@ -53,17 +53,6 @@ class SDM(BaseMatchModel):
|
|
|
53
53
|
dense_l1_reg=0.0,
|
|
54
54
|
embedding_l2_reg=0.0,
|
|
55
55
|
dense_l2_reg=0.0,
|
|
56
|
-
optimizer: str | torch.optim.Optimizer = "adam",
|
|
57
|
-
optimizer_params: dict | None = None,
|
|
58
|
-
scheduler: (
|
|
59
|
-
str
|
|
60
|
-
| torch.optim.lr_scheduler._LRScheduler
|
|
61
|
-
| type[torch.optim.lr_scheduler._LRScheduler]
|
|
62
|
-
| None
|
|
63
|
-
) = None,
|
|
64
|
-
scheduler_params: dict | None = None,
|
|
65
|
-
loss: str | nn.Module | list[str | nn.Module] | None = "bce",
|
|
66
|
-
loss_params: dict | list[dict] | None = None,
|
|
67
56
|
**kwargs,
|
|
68
57
|
):
|
|
69
58
|
|
|
@@ -189,15 +178,6 @@ class SDM(BaseMatchModel):
|
|
|
189
178
|
include_modules=["item_dnn"] if self.item_dnn else [],
|
|
190
179
|
)
|
|
191
180
|
|
|
192
|
-
self.compile(
|
|
193
|
-
optimizer=optimizer,
|
|
194
|
-
optimizer_params=optimizer_params,
|
|
195
|
-
scheduler=scheduler,
|
|
196
|
-
scheduler_params=scheduler_params,
|
|
197
|
-
loss=loss,
|
|
198
|
-
loss_params=loss_params,
|
|
199
|
-
)
|
|
200
|
-
|
|
201
181
|
def user_tower(self, user_input: dict) -> torch.Tensor:
|
|
202
182
|
seq_feature = self.user_sequence_features[0]
|
|
203
183
|
seq_input = user_input[seq_feature.name]
|
|
@@ -10,7 +10,6 @@ Reference:
|
|
|
10
10
|
from typing import Literal
|
|
11
11
|
|
|
12
12
|
import torch
|
|
13
|
-
import torch.nn as nn
|
|
14
13
|
|
|
15
14
|
from nextrec.basic.features import DenseFeature, SequenceFeature, SparseFeature
|
|
16
15
|
from nextrec.basic.layers import MLP, EmbeddingLayer
|
|
@@ -54,17 +53,6 @@ class YoutubeDNN(BaseMatchModel):
|
|
|
54
53
|
dense_l1_reg=0.0,
|
|
55
54
|
embedding_l2_reg=0.0,
|
|
56
55
|
dense_l2_reg=0.0,
|
|
57
|
-
optimizer: str | torch.optim.Optimizer = "adam",
|
|
58
|
-
optimizer_params: dict | None = None,
|
|
59
|
-
scheduler: (
|
|
60
|
-
str
|
|
61
|
-
| torch.optim.lr_scheduler._LRScheduler
|
|
62
|
-
| type[torch.optim.lr_scheduler._LRScheduler]
|
|
63
|
-
| None
|
|
64
|
-
) = None,
|
|
65
|
-
scheduler_params: dict | None = None,
|
|
66
|
-
loss: str | nn.Module | list[str | nn.Module] | None = "bce",
|
|
67
|
-
loss_params: dict | list[dict] | None = None,
|
|
68
56
|
**kwargs,
|
|
69
57
|
):
|
|
70
58
|
|
|
@@ -156,15 +144,6 @@ class YoutubeDNN(BaseMatchModel):
|
|
|
156
144
|
embedding_attr="item_embedding", include_modules=["item_dnn"]
|
|
157
145
|
)
|
|
158
146
|
|
|
159
|
-
self.compile(
|
|
160
|
-
optimizer=optimizer,
|
|
161
|
-
optimizer_params=optimizer_params,
|
|
162
|
-
scheduler=scheduler,
|
|
163
|
-
scheduler_params=scheduler_params,
|
|
164
|
-
loss=loss,
|
|
165
|
-
loss_params=loss_params,
|
|
166
|
-
)
|
|
167
|
-
|
|
168
147
|
def user_tower(self, user_input: dict) -> torch.Tensor:
|
|
169
148
|
"""
|
|
170
149
|
User tower to encode historical behavior sequences and user features.
|
|
@@ -323,11 +323,6 @@ class HSTU(BaseModel):
|
|
|
323
323
|
tie_embeddings: bool = True,
|
|
324
324
|
target: Optional[list[str] | str] = None,
|
|
325
325
|
task: str | list[str] | None = None,
|
|
326
|
-
optimizer: str = "adam",
|
|
327
|
-
optimizer_params: Optional[dict] = None,
|
|
328
|
-
scheduler: Optional[str] = None,
|
|
329
|
-
scheduler_params: Optional[dict] = None,
|
|
330
|
-
loss_params: Optional[dict] = None,
|
|
331
326
|
embedding_l1_reg: float = 0.0,
|
|
332
327
|
dense_l1_reg: float = 0.0,
|
|
333
328
|
embedding_l2_reg: float = 0.0,
|
|
@@ -426,19 +421,6 @@ class HSTU(BaseModel):
|
|
|
426
421
|
self.register_buffer("causal_mask", torch.empty(0), persistent=False)
|
|
427
422
|
self.ignore_index = self.padding_idx if self.padding_idx is not None else -100
|
|
428
423
|
|
|
429
|
-
optimizer_params = optimizer_params or {}
|
|
430
|
-
scheduler_params = scheduler_params or {}
|
|
431
|
-
loss_params = loss_params or {}
|
|
432
|
-
loss_params.setdefault("ignore_index", self.ignore_index)
|
|
433
|
-
|
|
434
|
-
self.compile(
|
|
435
|
-
optimizer=optimizer,
|
|
436
|
-
optimizer_params=optimizer_params,
|
|
437
|
-
scheduler=scheduler,
|
|
438
|
-
scheduler_params=scheduler_params,
|
|
439
|
-
loss="crossentropy",
|
|
440
|
-
loss_params=loss_params,
|
|
441
|
-
)
|
|
442
424
|
self.register_regularization_weights(
|
|
443
425
|
embedding_attr="token_embedding",
|
|
444
426
|
include_modules=["layers", "lm_head", "context_proj"],
|
nextrec/utils/__init__.py
CHANGED
|
@@ -6,7 +6,7 @@ Last update: 19/12/2025
|
|
|
6
6
|
Author: Yang Zhou, zyaztec@gmail.com
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from . import console, data, embedding, torch_utils
|
|
9
|
+
from . import console, data, embedding, loss, torch_utils
|
|
10
10
|
from .config import (
|
|
11
11
|
build_feature_objects,
|
|
12
12
|
build_model_instance,
|
|
@@ -38,6 +38,7 @@ from .data import (
|
|
|
38
38
|
from .embedding import get_auto_embedding_dim
|
|
39
39
|
from .feature import to_list
|
|
40
40
|
from .model import compute_pair_scores, get_mlp_output_dim, merge_features
|
|
41
|
+
from .loss import normalize_task_loss
|
|
41
42
|
from .torch_utils import (
|
|
42
43
|
add_distributed_sampler,
|
|
43
44
|
get_device,
|
|
@@ -81,6 +82,8 @@ __all__ = [
|
|
|
81
82
|
"merge_features",
|
|
82
83
|
"get_mlp_output_dim",
|
|
83
84
|
"compute_pair_scores",
|
|
85
|
+
# Loss utilities
|
|
86
|
+
"normalize_task_loss",
|
|
84
87
|
# Feature utilities
|
|
85
88
|
"to_list",
|
|
86
89
|
# Config utilities
|
|
@@ -101,6 +104,7 @@ __all__ = [
|
|
|
101
104
|
"console",
|
|
102
105
|
"data",
|
|
103
106
|
"embedding",
|
|
107
|
+
"loss",
|
|
104
108
|
"torch_utils",
|
|
105
109
|
# Type aliases
|
|
106
110
|
"OptimizerName",
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Loss utilities for NextRec.
|
|
3
3
|
|
|
4
|
-
Date: create on
|
|
5
|
-
Checkpoint: edit on 19/12/2025
|
|
4
|
+
Date: create on 28/12/2025
|
|
6
5
|
Author: Yang Zhou, zyaztec@gmail.com
|
|
7
6
|
"""
|
|
8
7
|
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import torch
|
|
9
11
|
import torch.nn as nn
|
|
10
12
|
|
|
11
13
|
from nextrec.loss.listwise import (
|
|
@@ -19,11 +21,19 @@ from nextrec.loss.pairwise import BPRLoss, HingeLoss, TripletLoss
|
|
|
19
21
|
from nextrec.loss.pointwise import ClassBalancedFocalLoss, FocalLoss, WeightedBCELoss
|
|
20
22
|
from nextrec.utils.types import LossName
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
|
|
25
|
+
def normalize_task_loss(
|
|
26
|
+
task_loss,
|
|
27
|
+
valid_count,
|
|
28
|
+
total_count,
|
|
29
|
+
eps=1e-8,
|
|
30
|
+
) -> torch.Tensor:
|
|
31
|
+
if not torch.is_tensor(valid_count):
|
|
32
|
+
valid_count = torch.tensor(float(valid_count), device=task_loss.device)
|
|
33
|
+
if not torch.is_tensor(total_count):
|
|
34
|
+
total_count = torch.tensor(float(total_count), device=task_loss.device)
|
|
35
|
+
scale = valid_count.to(task_loss.dtype) / (total_count.to(task_loss.dtype) + eps)
|
|
36
|
+
return task_loss * scale
|
|
27
37
|
|
|
28
38
|
|
|
29
39
|
def build_cb_focal(kw):
|
nextrec/utils/model.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Model-related utilities for NextRec
|
|
3
3
|
|
|
4
4
|
Date: create on 03/12/2025
|
|
5
|
-
Checkpoint: edit on
|
|
5
|
+
Checkpoint: edit on 29/12/2025
|
|
6
6
|
Author: Yang Zhou, zyaztec@gmail.com
|
|
7
7
|
"""
|
|
8
8
|
|
|
@@ -72,6 +72,84 @@ def compute_pair_scores(model, data, batch_size: int = 512):
|
|
|
72
72
|
return scores.detach().cpu().numpy()
|
|
73
73
|
|
|
74
74
|
|
|
75
|
+
def get_training_modes(
|
|
76
|
+
training_mode,
|
|
77
|
+
nums_task: int,
|
|
78
|
+
valid_modes: set[str] | None = None,
|
|
79
|
+
) -> list:
|
|
80
|
+
valid_modes = valid_modes or {"pointwise", "pairwise", "listwise"}
|
|
81
|
+
if isinstance(training_mode, list):
|
|
82
|
+
training_modes = list(training_mode)
|
|
83
|
+
if len(training_modes) != nums_task:
|
|
84
|
+
raise ValueError(
|
|
85
|
+
"[BaseModel-init Error] training_mode list length must match number of tasks."
|
|
86
|
+
)
|
|
87
|
+
else:
|
|
88
|
+
training_modes = [training_mode] * nums_task
|
|
89
|
+
if any(mode not in valid_modes for mode in training_modes):
|
|
90
|
+
raise ValueError(
|
|
91
|
+
"[BaseModel-init Error] training_mode must be one of {'pointwise', 'pairwise', 'listwise'}."
|
|
92
|
+
)
|
|
93
|
+
return training_modes
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def get_loss_list(
|
|
97
|
+
loss,
|
|
98
|
+
training_modes: list[str],
|
|
99
|
+
nums_task: int,
|
|
100
|
+
default_losses: dict[str, str],
|
|
101
|
+
):
|
|
102
|
+
effective_loss = loss
|
|
103
|
+
if effective_loss is None:
|
|
104
|
+
loss_list = [default_losses[mode] for mode in training_modes]
|
|
105
|
+
elif isinstance(effective_loss, list):
|
|
106
|
+
if not effective_loss:
|
|
107
|
+
loss_list = [default_losses[mode] for mode in training_modes]
|
|
108
|
+
else:
|
|
109
|
+
if len(effective_loss) != nums_task:
|
|
110
|
+
raise ValueError(
|
|
111
|
+
f"[BaseModel-compile Error] Number of loss functions ({len(effective_loss)}) must match number of tasks ({nums_task})."
|
|
112
|
+
)
|
|
113
|
+
loss_list = list(effective_loss)
|
|
114
|
+
else:
|
|
115
|
+
loss_list = [effective_loss] * nums_task
|
|
116
|
+
|
|
117
|
+
for idx, mode in enumerate(training_modes):
|
|
118
|
+
if isinstance(loss_list[idx], str) and loss_list[idx] in {
|
|
119
|
+
"bce",
|
|
120
|
+
"binary_crossentropy",
|
|
121
|
+
}:
|
|
122
|
+
if mode in {"pairwise", "listwise"}:
|
|
123
|
+
loss_list[idx] = default_losses[mode]
|
|
124
|
+
return loss_list
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def resolve_loss_weights(loss_weights, nums_task: int):
|
|
128
|
+
if loss_weights is None:
|
|
129
|
+
return None
|
|
130
|
+
if nums_task == 1:
|
|
131
|
+
if isinstance(loss_weights, (list, tuple)):
|
|
132
|
+
if len(loss_weights) != 1:
|
|
133
|
+
raise ValueError(
|
|
134
|
+
"[BaseModel-compile Error] loss_weights list must have exactly one element for single-task setup."
|
|
135
|
+
)
|
|
136
|
+
loss_weights = loss_weights[0]
|
|
137
|
+
return [float(loss_weights)]
|
|
138
|
+
if isinstance(loss_weights, (int, float)):
|
|
139
|
+
weights = [float(loss_weights)] * nums_task
|
|
140
|
+
elif isinstance(loss_weights, (list, tuple)):
|
|
141
|
+
weights = [float(w) for w in loss_weights]
|
|
142
|
+
if len(weights) != nums_task:
|
|
143
|
+
raise ValueError(
|
|
144
|
+
f"[BaseModel-compile Error] Number of loss_weights ({len(weights)}) must match number of tasks ({nums_task})."
|
|
145
|
+
)
|
|
146
|
+
else:
|
|
147
|
+
raise TypeError(
|
|
148
|
+
f"[BaseModel-compile Error] loss_weights must be int, float, list or tuple, got {type(loss_weights)}"
|
|
149
|
+
)
|
|
150
|
+
return weights
|
|
151
|
+
|
|
152
|
+
|
|
75
153
|
def prepare_ranking_targets(
|
|
76
154
|
y_pred: torch.Tensor, y_true: torch.Tensor
|
|
77
155
|
) -> tuple[torch.Tensor, torch.Tensor]:
|
nextrec/utils/types.py
CHANGED
|
@@ -34,26 +34,65 @@ LossName = Literal[
|
|
|
34
34
|
]
|
|
35
35
|
|
|
36
36
|
ActivationName = Literal[
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
37
|
+
"dice",
|
|
38
|
+
"relu",
|
|
39
|
+
"relu6",
|
|
40
|
+
"elu",
|
|
41
|
+
"selu",
|
|
42
|
+
"leaky_relu",
|
|
43
|
+
"prelu",
|
|
44
|
+
"gelu",
|
|
45
|
+
"sigmoid",
|
|
46
|
+
"tanh",
|
|
47
|
+
"softplus",
|
|
48
|
+
"softsign",
|
|
49
|
+
"hardswish",
|
|
50
|
+
"mish",
|
|
51
|
+
"silu",
|
|
52
|
+
"swish",
|
|
53
|
+
"hardsigmoid",
|
|
54
|
+
"tanhshrink",
|
|
55
|
+
"softshrink",
|
|
56
|
+
"none",
|
|
57
|
+
"linear",
|
|
58
|
+
"identity",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
TrainingModeName = Literal["pointwise", "pairwise", "listwise"]
|
|
62
|
+
|
|
63
|
+
TaskTypeName = Literal["binary", "regression"]
|
|
64
|
+
|
|
65
|
+
MetricsName = Literal[
|
|
66
|
+
"auc",
|
|
67
|
+
"gauc",
|
|
68
|
+
"ks",
|
|
69
|
+
"logloss",
|
|
70
|
+
"accuracy",
|
|
71
|
+
"acc",
|
|
72
|
+
"precision",
|
|
73
|
+
"recall",
|
|
74
|
+
"f1",
|
|
75
|
+
"micro_f1",
|
|
76
|
+
"macro_f1",
|
|
77
|
+
"mse",
|
|
78
|
+
"mae",
|
|
79
|
+
"rmse",
|
|
80
|
+
"r2",
|
|
81
|
+
"mape",
|
|
82
|
+
"msle",
|
|
83
|
+
"auc",
|
|
84
|
+
"gauc",
|
|
85
|
+
"precision@10",
|
|
86
|
+
"hitrate@10",
|
|
87
|
+
"map@10",
|
|
88
|
+
"cosine",
|
|
89
|
+
"recall@5",
|
|
90
|
+
"recall@10",
|
|
91
|
+
"recall@20",
|
|
92
|
+
"ndcg@5",
|
|
93
|
+
"ndcg@10",
|
|
94
|
+
"ndcg@20",
|
|
95
|
+
"mrr@5",
|
|
96
|
+
"mrr@10",
|
|
97
|
+
"mrr@20",
|
|
98
|
+
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nextrec
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.23
|
|
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
|
|
@@ -65,11 +65,11 @@ Description-Content-Type: text/markdown
|
|
|
65
65
|
|
|
66
66
|
<div align="center">
|
|
67
67
|
|
|
68
|
-
[](https://pypistats.org/packages/nextrec)
|
|
69
69
|

|
|
70
70
|

|
|
71
71
|

|
|
72
|
-

|
|
73
73
|
[](https://deepwiki.com/zerolovesea/NextRec)
|
|
74
74
|
|
|
75
75
|
中文文档 | [English Version](README_en.md)
|
|
@@ -191,6 +191,8 @@ model = DIN(
|
|
|
191
191
|
dense_features=dense_features,
|
|
192
192
|
sparse_features=sparse_features,
|
|
193
193
|
sequence_features=sequence_features,
|
|
194
|
+
behavior_feature_name="sequence_0",
|
|
195
|
+
candidate_feature_name="item_id",
|
|
194
196
|
mlp_params=mlp_params,
|
|
195
197
|
attention_hidden_units=[80, 40],
|
|
196
198
|
attention_activation='sigmoid',
|
|
@@ -204,7 +206,7 @@ model = DIN(
|
|
|
204
206
|
session_id="din_tutorial", # 实验id,用于存放训练日志
|
|
205
207
|
)
|
|
206
208
|
|
|
207
|
-
#
|
|
209
|
+
# 编译模型,优化器/损失/学习率调度器统一在 compile 中设置
|
|
208
210
|
model.compile(
|
|
209
211
|
optimizer = "adam",
|
|
210
212
|
optimizer_params = {"lr": 1e-3, "weight_decay": 1e-5},
|
|
@@ -247,11 +249,11 @@ nextrec --mode=predict --predict_config=path/to/predict_config.yaml
|
|
|
247
249
|
|
|
248
250
|
预测结果固定保存到 `{checkpoint_path}/predictions/{name}.{save_data_format}`。
|
|
249
251
|
|
|
250
|
-
> 截止当前版本0.4.
|
|
252
|
+
> 截止当前版本0.4.23,NextRec CLI支持单机训练,分布式训练相关功能尚在开发中。
|
|
251
253
|
|
|
252
254
|
## 兼容平台
|
|
253
255
|
|
|
254
|
-
当前最新版本为0.4.
|
|
256
|
+
当前最新版本为0.4.23,所有模型和测试代码均已在以下平台通过验证,如果开发者在使用中遇到兼容问题,请在issue区提出错误报告及系统版本:
|
|
255
257
|
|
|
256
258
|
| 平台 | 配置 |
|
|
257
259
|
|------|------|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
nextrec/__init__.py,sha256=_M3oUqyuvQ5k8Th_3wId6hQ_caclh7M5ad51XN09m98,235
|
|
2
|
+
nextrec/__version__.py,sha256=bUxoIOr-G9-PoGmh7zAW9CCJTt17Q0QuRmIjl2A39Sw,23
|
|
3
|
+
nextrec/cli.py,sha256=Vm1XCFVw1vFh9NFw3PYZ_fYbh07tf45fl3RtPycooUI,24317
|
|
4
|
+
nextrec/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
nextrec/basic/activation.py,sha256=uekcJsOy8SiT0_NaDO2VNSStyYFzVikDFVLDk-VrjwQ,2949
|
|
6
|
+
nextrec/basic/callback.py,sha256=7geza5iMMlMojlrIKH5A7nzvCe4IYwgUaMRh_xpblWk,12585
|
|
7
|
+
nextrec/basic/features.py,sha256=zLijBNkKwCXv9TKxSWwvmt7aVfWn2D5JvfwukeIRqec,9174
|
|
8
|
+
nextrec/basic/heads.py,sha256=BshykLxD41KxKuZaBxf4Fmy1Mc52b3ioJliN1BVaGlk,3374
|
|
9
|
+
nextrec/basic/layers.py,sha256=74RZiyYgiY9YFb2hWWNEBdWjvx2bXzCF3WtJJeSDtXQ,37857
|
|
10
|
+
nextrec/basic/loggers.py,sha256=KxTPVHtkebAbpxZIYZ4aqncZCu-dccpKtIxmi2bVs6o,13160
|
|
11
|
+
nextrec/basic/metrics.py,sha256=CkdMOq_RsQKd9qBGVWsNI9UF16yK4N-SnDvmkwA9KeY,23076
|
|
12
|
+
nextrec/basic/model.py,sha256=bj60PWmG3wl9xmuZAwpnEB7XkBAr5kkZE-UA3Z5iaxU,103976
|
|
13
|
+
nextrec/basic/session.py,sha256=mrIsjRJhmvcAfoO1pXX-KB3SK5CCgz89wH8XDoAiGEI,4475
|
|
14
|
+
nextrec/basic/summary.py,sha256=9xDtDbtMCPSQuEVLx23-SLL6qDRl1MfM19YMBG3Wtow,15372
|
|
15
|
+
nextrec/data/__init__.py,sha256=YZQjpty1pDCM7q_YNmiA2sa5kbujUw26ObLHWjMPjKY,1194
|
|
16
|
+
nextrec/data/batch_utils.py,sha256=0bYGVX7RlhnHv_ZBaUngjDIpBNw-igCk98DgOsF7T6o,2879
|
|
17
|
+
nextrec/data/data_processing.py,sha256=ZDZMSTBvxjPppl872is4M49o4WAkZXw2vUFOsNr0q3w,6658
|
|
18
|
+
nextrec/data/data_utils.py,sha256=0Ls1cnG9lBz0ovtyedw5vwp7WegGK_iF-F8e_3DEddo,880
|
|
19
|
+
nextrec/data/dataloader.py,sha256=43eTLqhWKcJdrFiGzlrz8zIgLAQsylRQ_DOklPNmKr4,18993
|
|
20
|
+
nextrec/data/preprocessor.py,sha256=4mVhQ6W2M9nmTeQjArx_cndWwnk2i29U2iXSNgg5gXM,52917
|
|
21
|
+
nextrec/loss/__init__.py,sha256=rualGsY-IBvmM52q9eOBk0MyKcMkpkazcscOeDXi_SM,774
|
|
22
|
+
nextrec/loss/grad_norm.py,sha256=YoE_XSIN1HOUcNq1dpfkIlWtMaB5Pu-SEWDaNgtRw1M,8316
|
|
23
|
+
nextrec/loss/listwise.py,sha256=mluxXQt9XiuWGvXA1nk4I0miqaKB6_GPVQqxLhAiJKs,5999
|
|
24
|
+
nextrec/loss/pairwise.py,sha256=9fyH9p2u-N0-jAnNTq3X5Dje0ipj1dob8wp-yQKRra4,3493
|
|
25
|
+
nextrec/loss/pointwise.py,sha256=09nzI1L5eP9raXnj3Q49bD9Clp_JmsSWUvEj7bkTzSw,7474
|
|
26
|
+
nextrec/models/generative/__init__.py,sha256=0MV3P-_ainPaTxmRBGWKUVCEt14KJvuvEHmRB3OQ1Fs,176
|
|
27
|
+
nextrec/models/generative/tiger.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
+
nextrec/models/multi_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
+
nextrec/models/multi_task/esmm.py,sha256=pZXK7WQVR3UUV8AKPZUHQnk7KxIA4Yp4Gmt5H8rsSu8,5734
|
|
30
|
+
nextrec/models/multi_task/mmoe.py,sha256=vihfiWkNFLyBF7juimUzq9Sg2id4ExD7ShFtN7RerOc,7817
|
|
31
|
+
nextrec/models/multi_task/ple.py,sha256=Mf_RPtENCjj0WgTm0TDL5blZZuph8XWi9y-M36TvNBY,12362
|
|
32
|
+
nextrec/models/multi_task/poso.py,sha256=O2K4nFRk0Lm-YCYCK258iwxzYRh7tdJDACm_87cFE10,18427
|
|
33
|
+
nextrec/models/multi_task/share_bottom.py,sha256=aX449O09qlN5D19HCYAa4uwKa1hq00NJs4uLriJzqM0,5746
|
|
34
|
+
nextrec/models/ranking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
nextrec/models/ranking/afm.py,sha256=rTuLH_6GD8DXEu5GjuypdAXpyc-Ug4A2pIQ9y5mlA24,9177
|
|
36
|
+
nextrec/models/ranking/autoint.py,sha256=UVuVyinTxy29gw_0bI9aP6xYzg3fpDfN-11JjqgnM68,7026
|
|
37
|
+
nextrec/models/ranking/dcn.py,sha256=elRw4qEE9d8tYmZEqdGlE_l-_fQ5CacpVY1IrbyX6iQ,6466
|
|
38
|
+
nextrec/models/ranking/dcn_v2.py,sha256=XhSz3xZOTen6hrsW8eV9GwnEJ7etpnyUV_sTPmqUzxM,10172
|
|
39
|
+
nextrec/models/ranking/deepfm.py,sha256=Y6gVcZzHeOxUAT5QT2I2y8hlrL0A9gG3L92xCshPs9E,4191
|
|
40
|
+
nextrec/models/ranking/dien.py,sha256=QtinHyg6kvbJPhPTC1KUTOngf8HFcsuEMBu3yyxOU2Y,18116
|
|
41
|
+
nextrec/models/ranking/din.py,sha256=kh9oAAq8WvLCoTtI0Im4gUZIlK8LC7jLgGclq-ucW3s,8605
|
|
42
|
+
nextrec/models/ranking/eulernet.py,sha256=pcZLOj0h97jp32vXaZeuDku82t1Qsa3NFjPimTGq48Q,11274
|
|
43
|
+
nextrec/models/ranking/ffm.py,sha256=-cAfSB6eU3-P2ZXv9P4OmsetFt1X7zYO83wBz6uR6is,10302
|
|
44
|
+
nextrec/models/ranking/fibinet.py,sha256=IapVFh35j95FKyHGr6VNSavFJQ_FMXLzpb_r24xHnaM,7068
|
|
45
|
+
nextrec/models/ranking/fm.py,sha256=Oby9rikk2-V8xKLeg3hMPFH10V0rCiYA14pmbn9dqe8,3585
|
|
46
|
+
nextrec/models/ranking/lr.py,sha256=jaWd1V7PAPvra7M1eStAI_GFXqc2eKeWRVJ4MvlSp7g,3017
|
|
47
|
+
nextrec/models/ranking/masknet.py,sha256=u0rVHfRQpskCyPJdAC0D7ySf2PkhNBCEMmAce-JvlfA,11396
|
|
48
|
+
nextrec/models/ranking/pnn.py,sha256=vxx5jnrWeerXKet06aYa74edEjly4BYRcGsDYgSp38A,7338
|
|
49
|
+
nextrec/models/ranking/widedeep.py,sha256=8kF695q-gR_ECfKkspYgDEbWkh_Unnt5Ta3GuqbxnzQ,3999
|
|
50
|
+
nextrec/models/ranking/xdeepfm.py,sha256=BjuZYiIkpMAevJZWx_NUgtFfLwamwuLXuarUpEidTsc,7240
|
|
51
|
+
nextrec/models/representation/__init__.py,sha256=O3QHMMXBszwM-mTl7bA3wawNZvDGet-QIv6Ys5GHGJ8,190
|
|
52
|
+
nextrec/models/representation/autorec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
|
+
nextrec/models/representation/bpr.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
|
+
nextrec/models/representation/cl4srec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
+
nextrec/models/representation/lightgcn.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
+
nextrec/models/representation/mf.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
|
+
nextrec/models/representation/rqvae.py,sha256=JyZxVY9CibcdBGk97TxjG5O3WQC10_60tHNcP_qtegs,29290
|
|
58
|
+
nextrec/models/representation/s3rec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
|
+
nextrec/models/retrieval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
+
nextrec/models/retrieval/dssm.py,sha256=NxqGYkbRhJ_tXs8ipklEmQcsyz9Jyh21Hkv5dgoU2wk,6998
|
|
61
|
+
nextrec/models/retrieval/dssm_v2.py,sha256=AeOn5XZgqImqRWofEDmHvoc65iFH5UrbP_k9sffx97M,6066
|
|
62
|
+
nextrec/models/retrieval/mind.py,sha256=oF79m6bZ9yAKCTB_IJL545J11cU2izKO2q-1ifI4TNA,14171
|
|
63
|
+
nextrec/models/retrieval/sdm.py,sha256=8c9hB8g4my5YYE178wnicmICX5Q3PLU4Z-E2GUDrHFE,9639
|
|
64
|
+
nextrec/models/retrieval/youtube_dnn.py,sha256=BkEr1jGBnsogFJ1LtgC4oytCqCuP-iX9i_NvUUP9RKM,6462
|
|
65
|
+
nextrec/models/sequential/hstu.py,sha256=4-EUOQ4HTRG5MAhTA2b9FOOXXw8oyPxDBaaDFunkT6o,18979
|
|
66
|
+
nextrec/models/sequential/sasrec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
nextrec/utils/__init__.py,sha256=jD73RLigxcHFP-rXBoPi2VUTKH7kE5vNMQkr4lW8UUY,2655
|
|
68
|
+
nextrec/utils/config.py,sha256=UIi4zntP2g4IJaeMQYoa6kMQlU_23Hq4N1ZugMgnB5A,20331
|
|
69
|
+
nextrec/utils/console.py,sha256=RA3ZTjtUQXvueouSmXJNLkRjeUGQZesphwWjFMTbV4I,13577
|
|
70
|
+
nextrec/utils/data.py,sha256=pSL96mWjWfW_RKE-qlUSs9vfiYnFZAaRirzA6r7DB6s,24994
|
|
71
|
+
nextrec/utils/embedding.py,sha256=akAEc062MG2cD7VIOllHaqtwzAirQR2gq5iW7oKpGAU,1449
|
|
72
|
+
nextrec/utils/feature.py,sha256=E3NOFIW8gAoRXVrDhCSonzg8k7nMUZyZzMfCq9k73_A,623
|
|
73
|
+
nextrec/utils/loss.py,sha256=GBWQGpDaYkMJySpdG078XbeUNXUC34PVqFy0AqNS9N0,4578
|
|
74
|
+
nextrec/utils/model.py,sha256=UmDdV23ra7klvZZ3HEbRWBEeMrKljNoeq3hSVWT6a6o,7558
|
|
75
|
+
nextrec/utils/torch_utils.py,sha256=1lvZ7BG-rGLIAlumQIoeq5T9dO9hx2p8sa2_DC_bTZU,11564
|
|
76
|
+
nextrec/utils/types.py,sha256=VhtLXUVvu0zAZVAUgRUML4FExRC-GH-ZmC1UiVSr3HE,1523
|
|
77
|
+
nextrec-0.4.23.dist-info/METADATA,sha256=y2SWDa4fk2I1SnlLr4Svb6FTHp1oxvZrleL4OAlxuos,21852
|
|
78
|
+
nextrec-0.4.23.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
79
|
+
nextrec-0.4.23.dist-info/entry_points.txt,sha256=NN-dNSdfMRTv86bNXM7d3ZEPW2BQC6bRi7QP7i9cIps,45
|
|
80
|
+
nextrec-0.4.23.dist-info/licenses/LICENSE,sha256=2fQfVKeafywkni7MYHyClC6RGGC3laLTXCNBx-ubtp0,1064
|
|
81
|
+
nextrec-0.4.23.dist-info/RECORD,,
|
nextrec-0.4.21.dist-info/RECORD
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
nextrec/__init__.py,sha256=_M3oUqyuvQ5k8Th_3wId6hQ_caclh7M5ad51XN09m98,235
|
|
2
|
-
nextrec/__version__.py,sha256=HRnyuWvhHjVmMtjn-Iir0_ZbxVK3sjpTYkAqLIRVMIE,23
|
|
3
|
-
nextrec/cli.py,sha256=Vm1XCFVw1vFh9NFw3PYZ_fYbh07tf45fl3RtPycooUI,24317
|
|
4
|
-
nextrec/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
nextrec/basic/activation.py,sha256=HfSNRXcsCFvPRxVUuV4s_NDoltE1CC_e40-9fxtnrMA,2975
|
|
6
|
-
nextrec/basic/callback.py,sha256=7geza5iMMlMojlrIKH5A7nzvCe4IYwgUaMRh_xpblWk,12585
|
|
7
|
-
nextrec/basic/features.py,sha256=zLijBNkKwCXv9TKxSWwvmt7aVfWn2D5JvfwukeIRqec,9174
|
|
8
|
-
nextrec/basic/heads.py,sha256=yKLFzYCyNVHoQ2JUNXdEiX1JldwZODl4nXDmwh0xVYo,3391
|
|
9
|
-
nextrec/basic/layers.py,sha256=74RZiyYgiY9YFb2hWWNEBdWjvx2bXzCF3WtJJeSDtXQ,37857
|
|
10
|
-
nextrec/basic/loggers.py,sha256=KxTPVHtkebAbpxZIYZ4aqncZCu-dccpKtIxmi2bVs6o,13160
|
|
11
|
-
nextrec/basic/metrics.py,sha256=1r6efTc9TpARNBt5X9ISoppTZflej6EdFkjPYHV-YZI,23162
|
|
12
|
-
nextrec/basic/model.py,sha256=nKuDy64ebKV4yB9qp1iIThDQoxUDX-U-nSSiLNu-hnc,103836
|
|
13
|
-
nextrec/basic/session.py,sha256=mrIsjRJhmvcAfoO1pXX-KB3SK5CCgz89wH8XDoAiGEI,4475
|
|
14
|
-
nextrec/basic/summary.py,sha256=I6vNc-W_mVo7EogsFUTXf20bWYMVnTab60Zs6wSxsdc,14406
|
|
15
|
-
nextrec/data/__init__.py,sha256=YZQjpty1pDCM7q_YNmiA2sa5kbujUw26ObLHWjMPjKY,1194
|
|
16
|
-
nextrec/data/batch_utils.py,sha256=0bYGVX7RlhnHv_ZBaUngjDIpBNw-igCk98DgOsF7T6o,2879
|
|
17
|
-
nextrec/data/data_processing.py,sha256=ZDZMSTBvxjPppl872is4M49o4WAkZXw2vUFOsNr0q3w,6658
|
|
18
|
-
nextrec/data/data_utils.py,sha256=0Ls1cnG9lBz0ovtyedw5vwp7WegGK_iF-F8e_3DEddo,880
|
|
19
|
-
nextrec/data/dataloader.py,sha256=43eTLqhWKcJdrFiGzlrz8zIgLAQsylRQ_DOklPNmKr4,18993
|
|
20
|
-
nextrec/data/preprocessor.py,sha256=pilzqbluAn1QykeBVPxvnQcbRUuZr3aX9hCQqey--Ks,47245
|
|
21
|
-
nextrec/loss/__init__.py,sha256=ZCgsfyR5YAecv6MdOsnUjkfacvZg2coQVjuKAfPvmRo,923
|
|
22
|
-
nextrec/loss/grad_norm.py,sha256=1BU1uHh6CuNRc_M_bPP2mrVKOnUGQWv_tR_8-ETOJlg,8385
|
|
23
|
-
nextrec/loss/listwise.py,sha256=UT9vJCOTOQLogVwaeTV7Z5uxIYnngGdxk-p9e97MGkU,5744
|
|
24
|
-
nextrec/loss/loss_utils.py,sha256=Bl3PJ-AQrTDlV_uGJV4M6XCgmf8X2Z0h4nAP9o40ngU,4168
|
|
25
|
-
nextrec/loss/pairwise.py,sha256=X9yg-8pcPt2IWU0AiUhWAt3_4W_3wIF0uSdDYTdoPFY,3398
|
|
26
|
-
nextrec/loss/pointwise.py,sha256=o9J3OznY0hlbDsUXqn3k-BBzYiuUH5dopz8QBFqS_kQ,7343
|
|
27
|
-
nextrec/models/generative/__init__.py,sha256=0MV3P-_ainPaTxmRBGWKUVCEt14KJvuvEHmRB3OQ1Fs,176
|
|
28
|
-
nextrec/models/generative/tiger.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
nextrec/models/multi_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
nextrec/models/multi_task/esmm.py,sha256=nDd_Hr3tBdhDs77O5WlN5tafi4eizAvaGYdBqhl3_ws,6480
|
|
31
|
-
nextrec/models/multi_task/mmoe.py,sha256=nMAIOp9_wXvQTZqRUHRIUSSCxSkH9L48oqe6MB_d2Xk,8614
|
|
32
|
-
nextrec/models/multi_task/ple.py,sha256=Pzj7Z_1rG85rlHgvuBZ4kOa_emSZd94KjalDzmi9uuo,13050
|
|
33
|
-
nextrec/models/multi_task/poso.py,sha256=vOBU4ZW22P8PBoN0isuGbAbLhHa_rMpKUSL5zs-HTvM,19167
|
|
34
|
-
nextrec/models/multi_task/share_bottom.py,sha256=NUzoL_A6XL2ZHiB3C-VfnBAuver_Bu9tty7nr3QwpjQ,6549
|
|
35
|
-
nextrec/models/ranking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
nextrec/models/ranking/afm.py,sha256=_TdRIUtgx2jqOgamisZTekesGUUhdxvLWR9SJ0NZZF4,10082
|
|
37
|
-
nextrec/models/ranking/autoint.py,sha256=_nA0umo-PKrwLh1g_6HcbQLWakKpsAxP7G1jI1-bL1k,8066
|
|
38
|
-
nextrec/models/ranking/dcn.py,sha256=LVoOzc6ibHRntLX_Gtlz7b18tpX_CCyg7448tvG4KMA,7327
|
|
39
|
-
nextrec/models/ranking/dcn_v2.py,sha256=9jWND-OVPtGfn_aJxuvuuAUJFJ48JD89khb-_mVQnVY,11120
|
|
40
|
-
nextrec/models/ranking/deepfm.py,sha256=l57dAwtolWWBLvkCsZFZeOkWHxMbBZateBGKYbIKPQ0,5144
|
|
41
|
-
nextrec/models/ranking/dien.py,sha256=hVRq4OUJ4UM3Q8BC3tkasAJSRdoa_MCPpU4DvhxlMhw,18982
|
|
42
|
-
nextrec/models/ranking/din.py,sha256=tFBQ-3JcJcQde6kQPDTG9gMWnq7hVEgSj-x5r02XLvc,9446
|
|
43
|
-
nextrec/models/ranking/eulernet.py,sha256=RReaGKLDdX0xQMxm-O44d3FU0bpja24x-Chl46-woOE,12140
|
|
44
|
-
nextrec/models/ranking/ffm.py,sha256=2m3cfbXgSU4IUdGu-iteqYgAurM72Ens3hnrIZPaylU,11201
|
|
45
|
-
nextrec/models/ranking/fibinet.py,sha256=9zN4tdgdzfLksb6BPl6Pcm4mqcHAXQHTJz8WTvFXO4w,7872
|
|
46
|
-
nextrec/models/ranking/fm.py,sha256=A9hzs3RW6GjQxwKirEBDCus68Ve5jfSwdxuzGw-KZno,4493
|
|
47
|
-
nextrec/models/ranking/lr.py,sha256=Qy83WSbv6_maCrdehUvRlWfql7LszFEZlvxzjxL28yw,3965
|
|
48
|
-
nextrec/models/ranking/masknet.py,sha256=D2qGSplXqlc7Y4nt6tgKHyufLkVglijEsPYSoybYyHA,12276
|
|
49
|
-
nextrec/models/ranking/pnn.py,sha256=Tt7kNUBIgU62FqVxK0BBFoanuQpwgKyhUvJTz1e06I8,8159
|
|
50
|
-
nextrec/models/ranking/widedeep.py,sha256=ZdJbQQT70Q49sGtgCKGOEtVlKCW4uASf1JxOWBhP-oA,4998
|
|
51
|
-
nextrec/models/ranking/xdeepfm.py,sha256=fHIRJj6Ai1BnEooaYt6JLbdyE7A_0P0aqH_0Tc4VdEE,8216
|
|
52
|
-
nextrec/models/representation/__init__.py,sha256=O3QHMMXBszwM-mTl7bA3wawNZvDGet-QIv6Ys5GHGJ8,190
|
|
53
|
-
nextrec/models/representation/autorec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
|
-
nextrec/models/representation/bpr.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
-
nextrec/models/representation/cl4srec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
-
nextrec/models/representation/lightgcn.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
|
-
nextrec/models/representation/mf.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
-
nextrec/models/representation/rqvae.py,sha256=JyZxVY9CibcdBGk97TxjG5O3WQC10_60tHNcP_qtegs,29290
|
|
59
|
-
nextrec/models/representation/s3rec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
-
nextrec/models/retrieval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
-
nextrec/models/retrieval/dssm.py,sha256=LGOhXH2pOcaQyabWLUvbSTuDOKOM3vaV4hrQ4LgF_M8,7834
|
|
62
|
-
nextrec/models/retrieval/dssm_v2.py,sha256=3fvsLzEBo9fJ75YKoGgh4nTvVT3z5rE1Mpnmd8xP5Nc,6902
|
|
63
|
-
nextrec/models/retrieval/mind.py,sha256=ZiXK-sMQulXK_ifVzIp4V1MW6manga8BDZXcMCwFbKU,14881
|
|
64
|
-
nextrec/models/retrieval/sdm.py,sha256=vNsfqmIP5XwuUJve8ettCByXfHloq6BM7SHYeIr2ss8,10349
|
|
65
|
-
nextrec/models/retrieval/youtube_dnn.py,sha256=ck4ja8v_BXG7X6AoEU_bUExvSHCWJBo-fNw3Y4zz9IQ,7194
|
|
66
|
-
nextrec/models/sequential/hstu.py,sha256=tlZR-UMhY5dMQVqmWYdkUg54h5W3vQUctwHA5TyThMo,19664
|
|
67
|
-
nextrec/models/sequential/sasrec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
-
nextrec/utils/__init__.py,sha256=Fb5yjSHBsKBitRuJKbhEbQDj3WMTGgjb3dazTwXezo8,2551
|
|
69
|
-
nextrec/utils/config.py,sha256=UIi4zntP2g4IJaeMQYoa6kMQlU_23Hq4N1ZugMgnB5A,20331
|
|
70
|
-
nextrec/utils/console.py,sha256=RA3ZTjtUQXvueouSmXJNLkRjeUGQZesphwWjFMTbV4I,13577
|
|
71
|
-
nextrec/utils/data.py,sha256=pSL96mWjWfW_RKE-qlUSs9vfiYnFZAaRirzA6r7DB6s,24994
|
|
72
|
-
nextrec/utils/embedding.py,sha256=akAEc062MG2cD7VIOllHaqtwzAirQR2gq5iW7oKpGAU,1449
|
|
73
|
-
nextrec/utils/feature.py,sha256=E3NOFIW8gAoRXVrDhCSonzg8k7nMUZyZzMfCq9k73_A,623
|
|
74
|
-
nextrec/utils/model.py,sha256=fHvFciUuMOVcM1oWiRva4LcArRdZ1R5Uzml-COSqqvM,4688
|
|
75
|
-
nextrec/utils/torch_utils.py,sha256=1lvZ7BG-rGLIAlumQIoeq5T9dO9hx2p8sa2_DC_bTZU,11564
|
|
76
|
-
nextrec/utils/types.py,sha256=cLHgo0Nd69t5cHcQrPIDNwtKKhrcbghS4XvXbs5P1xs,1036
|
|
77
|
-
nextrec-0.4.21.dist-info/METADATA,sha256=BggHbRJHkiNpRBDoZJDR_waUDcvlXW-EWkqZSbhLGBw,21743
|
|
78
|
-
nextrec-0.4.21.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
79
|
-
nextrec-0.4.21.dist-info/entry_points.txt,sha256=NN-dNSdfMRTv86bNXM7d3ZEPW2BQC6bRi7QP7i9cIps,45
|
|
80
|
-
nextrec-0.4.21.dist-info/licenses/LICENSE,sha256=2fQfVKeafywkni7MYHyClC6RGGC3laLTXCNBx-ubtp0,1064
|
|
81
|
-
nextrec-0.4.21.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|