nextrec 0.4.23__py3-none-any.whl → 0.4.25__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/layers.py +96 -46
- nextrec/basic/metrics.py +128 -113
- nextrec/basic/model.py +201 -76
- nextrec/basic/summary.py +58 -0
- nextrec/cli.py +13 -0
- nextrec/data/data_processing.py +3 -9
- nextrec/data/dataloader.py +27 -2
- nextrec/data/preprocessor.py +283 -36
- nextrec/models/multi_task/aitm.py +0 -0
- nextrec/models/multi_task/apg.py +0 -0
- nextrec/models/multi_task/cross_stitch.py +0 -0
- nextrec/models/multi_task/esmm.py +2 -2
- nextrec/models/multi_task/mmoe.py +4 -4
- nextrec/models/multi_task/pepnet.py +335 -0
- nextrec/models/multi_task/ple.py +8 -5
- nextrec/models/multi_task/poso.py +13 -11
- nextrec/models/multi_task/share_bottom.py +4 -4
- nextrec/models/multi_task/snr_trans.py +0 -0
- nextrec/models/ranking/dcn_v2.py +1 -1
- nextrec/models/retrieval/dssm.py +4 -4
- nextrec/models/retrieval/dssm_v2.py +4 -4
- nextrec/models/retrieval/mind.py +2 -2
- nextrec/models/retrieval/sdm.py +4 -4
- nextrec/models/retrieval/youtube_dnn.py +4 -4
- nextrec/utils/config.py +2 -0
- nextrec/utils/model.py +17 -64
- nextrec/utils/torch_utils.py +11 -0
- {nextrec-0.4.23.dist-info → nextrec-0.4.25.dist-info}/METADATA +5 -5
- {nextrec-0.4.23.dist-info → nextrec-0.4.25.dist-info}/RECORD +33 -28
- {nextrec-0.4.23.dist-info → nextrec-0.4.25.dist-info}/WHEEL +0 -0
- {nextrec-0.4.23.dist-info → nextrec-0.4.25.dist-info}/entry_points.txt +0 -0
- {nextrec-0.4.23.dist-info → nextrec-0.4.25.dist-info}/licenses/LICENSE +0 -0
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 31/12/2025
|
|
6
6
|
Author: Yang Zhou, zyaztec@gmail.com
|
|
7
7
|
"""
|
|
8
8
|
|
|
@@ -29,9 +29,9 @@ def merge_features(primary, secondary) -> list:
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
def get_mlp_output_dim(params: dict, fallback: int) -> int:
|
|
32
|
-
|
|
33
|
-
if
|
|
34
|
-
return
|
|
32
|
+
hidden_dims = params.get("hidden_dims")
|
|
33
|
+
if hidden_dims:
|
|
34
|
+
return hidden_dims[-1]
|
|
35
35
|
return fallback
|
|
36
36
|
|
|
37
37
|
|
|
@@ -72,47 +72,26 @@ 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
75
|
def get_loss_list(
|
|
97
76
|
loss,
|
|
98
77
|
training_modes: list[str],
|
|
99
78
|
nums_task: int,
|
|
100
|
-
default_losses: dict[str, str],
|
|
101
79
|
):
|
|
102
|
-
|
|
103
|
-
|
|
80
|
+
default_losses = {
|
|
81
|
+
"pointwise": "bce",
|
|
82
|
+
"pairwise": "bpr",
|
|
83
|
+
"listwise": "listnet",
|
|
84
|
+
}
|
|
85
|
+
if loss is None:
|
|
104
86
|
loss_list = [default_losses[mode] for mode in training_modes]
|
|
105
|
-
elif isinstance(
|
|
106
|
-
if
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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)
|
|
87
|
+
elif isinstance(loss, list):
|
|
88
|
+
if len(loss) != nums_task:
|
|
89
|
+
raise ValueError(
|
|
90
|
+
f"[BaseModel-compile Error] Number of loss functions ({len(loss)}) must match number of tasks ({nums_task})."
|
|
91
|
+
)
|
|
92
|
+
loss_list = loss
|
|
114
93
|
else:
|
|
115
|
-
loss_list = [
|
|
94
|
+
loss_list = [loss] * nums_task
|
|
116
95
|
|
|
117
96
|
for idx, mode in enumerate(training_modes):
|
|
118
97
|
if isinstance(loss_list[idx], str) and loss_list[idx] in {
|
|
@@ -124,32 +103,6 @@ def get_loss_list(
|
|
|
124
103
|
return loss_list
|
|
125
104
|
|
|
126
105
|
|
|
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
|
-
|
|
153
106
|
def prepare_ranking_targets(
|
|
154
107
|
y_pred: torch.Tensor, y_true: torch.Tensor
|
|
155
108
|
) -> tuple[torch.Tensor, torch.Tensor]:
|
nextrec/utils/torch_utils.py
CHANGED
|
@@ -204,6 +204,11 @@ def get_scheduler(
|
|
|
204
204
|
)
|
|
205
205
|
else:
|
|
206
206
|
raise NotImplementedError(f"Unsupported scheduler: {scheduler}")
|
|
207
|
+
elif isinstance(scheduler, type) and issubclass(
|
|
208
|
+
scheduler,
|
|
209
|
+
(torch.optim.lr_scheduler._LRScheduler, torch.optim.lr_scheduler.LRScheduler),
|
|
210
|
+
):
|
|
211
|
+
scheduler_fn = scheduler(optimizer, **scheduler_params)
|
|
207
212
|
elif isinstance(
|
|
208
213
|
scheduler,
|
|
209
214
|
(torch.optim.lr_scheduler._LRScheduler, torch.optim.lr_scheduler.LRScheduler),
|
|
@@ -215,6 +220,12 @@ def get_scheduler(
|
|
|
215
220
|
return scheduler_fn
|
|
216
221
|
|
|
217
222
|
|
|
223
|
+
def to_numpy(values: Any) -> np.ndarray:
|
|
224
|
+
if isinstance(values, torch.Tensor):
|
|
225
|
+
return values.detach().cpu().numpy()
|
|
226
|
+
return np.asarray(values)
|
|
227
|
+
|
|
228
|
+
|
|
218
229
|
def to_tensor(
|
|
219
230
|
value: Any, dtype: torch.dtype, device: torch.device | str | None = None
|
|
220
231
|
) -> torch.Tensor:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nextrec
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.25
|
|
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)
|
|
@@ -182,7 +182,7 @@ sequence_features = [
|
|
|
182
182
|
SequenceFeature(name='sequence_1', vocab_size=int(df['sequence_1'].apply(lambda x: max(x)).max() + 1), embedding_dim=16, padding_idx=0, embedding_name='sparse_0_emb'),]
|
|
183
183
|
|
|
184
184
|
mlp_params = {
|
|
185
|
-
"
|
|
185
|
+
"hidden_dims": [256, 128, 64],
|
|
186
186
|
"activation": "relu",
|
|
187
187
|
"dropout": 0.3,
|
|
188
188
|
}
|
|
@@ -249,11 +249,11 @@ nextrec --mode=predict --predict_config=path/to/predict_config.yaml
|
|
|
249
249
|
|
|
250
250
|
预测结果固定保存到 `{checkpoint_path}/predictions/{name}.{save_data_format}`。
|
|
251
251
|
|
|
252
|
-
> 截止当前版本0.4.
|
|
252
|
+
> 截止当前版本0.4.25,NextRec CLI支持单机训练,分布式训练相关功能尚在开发中。
|
|
253
253
|
|
|
254
254
|
## 兼容平台
|
|
255
255
|
|
|
256
|
-
当前最新版本为0.4.
|
|
256
|
+
当前最新版本为0.4.25,所有模型和测试代码均已在以下平台通过验证,如果开发者在使用中遇到兼容问题,请在issue区提出错误报告及系统版本:
|
|
257
257
|
|
|
258
258
|
| 平台 | 配置 |
|
|
259
259
|
|------|------|
|
|
@@ -1,23 +1,23 @@
|
|
|
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=2KhS4HNlDzv_pmrC0ssutBbIG8FVsE-4OUVNs-FKmXw,23
|
|
3
|
+
nextrec/cli.py,sha256=uOaXnlAM-ARrbxKOVWWkTE_rv-54px168kBhFUHtIAg,25073
|
|
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/callback.py,sha256=7geza5iMMlMojlrIKH5A7nzvCe4IYwgUaMRh_xpblWk,12585
|
|
7
7
|
nextrec/basic/features.py,sha256=zLijBNkKwCXv9TKxSWwvmt7aVfWn2D5JvfwukeIRqec,9174
|
|
8
8
|
nextrec/basic/heads.py,sha256=BshykLxD41KxKuZaBxf4Fmy1Mc52b3ioJliN1BVaGlk,3374
|
|
9
|
-
nextrec/basic/layers.py,sha256=
|
|
9
|
+
nextrec/basic/layers.py,sha256=tr8XFOcTvUHEZ6T3zJwmtKMA-u_xfzHloIkItGs821U,40084
|
|
10
10
|
nextrec/basic/loggers.py,sha256=KxTPVHtkebAbpxZIYZ4aqncZCu-dccpKtIxmi2bVs6o,13160
|
|
11
|
-
nextrec/basic/metrics.py,sha256=
|
|
12
|
-
nextrec/basic/model.py,sha256=
|
|
11
|
+
nextrec/basic/metrics.py,sha256=CPzENDcpO6QTDZLBtQlfAGKUYYQc0FT-eaMKJ4MURFo,23396
|
|
12
|
+
nextrec/basic/model.py,sha256=FFJIrMW0dqh89Jq1poXpNN-8XvPfcqIlKdChQpGH6x0,110083
|
|
13
13
|
nextrec/basic/session.py,sha256=mrIsjRJhmvcAfoO1pXX-KB3SK5CCgz89wH8XDoAiGEI,4475
|
|
14
|
-
nextrec/basic/summary.py,sha256=
|
|
14
|
+
nextrec/basic/summary.py,sha256=b6jLo70gqZj_bQ4eb5yb8SXmr2ilZlKNN293EyVnkyc,17759
|
|
15
15
|
nextrec/data/__init__.py,sha256=YZQjpty1pDCM7q_YNmiA2sa5kbujUw26ObLHWjMPjKY,1194
|
|
16
16
|
nextrec/data/batch_utils.py,sha256=0bYGVX7RlhnHv_ZBaUngjDIpBNw-igCk98DgOsF7T6o,2879
|
|
17
|
-
nextrec/data/data_processing.py,sha256=
|
|
17
|
+
nextrec/data/data_processing.py,sha256=lhuwYxWp4Ts2bbuLGDt2LmuPrOy7pNcKczd2uVcQ4ss,6476
|
|
18
18
|
nextrec/data/data_utils.py,sha256=0Ls1cnG9lBz0ovtyedw5vwp7WegGK_iF-F8e_3DEddo,880
|
|
19
|
-
nextrec/data/dataloader.py,sha256=
|
|
20
|
-
nextrec/data/preprocessor.py,sha256=
|
|
19
|
+
nextrec/data/dataloader.py,sha256=gTs4YC5tHHwTq0A9481KYK1XyloeN2dMVOjPAFehF_E,19972
|
|
20
|
+
nextrec/data/preprocessor.py,sha256=AD5bHNbkAZAnI_SbDfJJaAh57CRtRjoOQJ6aIBkgoQs,65251
|
|
21
21
|
nextrec/loss/__init__.py,sha256=rualGsY-IBvmM52q9eOBk0MyKcMkpkazcscOeDXi_SM,774
|
|
22
22
|
nextrec/loss/grad_norm.py,sha256=YoE_XSIN1HOUcNq1dpfkIlWtMaB5Pu-SEWDaNgtRw1M,8316
|
|
23
23
|
nextrec/loss/listwise.py,sha256=mluxXQt9XiuWGvXA1nk4I0miqaKB6_GPVQqxLhAiJKs,5999
|
|
@@ -26,16 +26,21 @@ nextrec/loss/pointwise.py,sha256=09nzI1L5eP9raXnj3Q49bD9Clp_JmsSWUvEj7bkTzSw,747
|
|
|
26
26
|
nextrec/models/generative/__init__.py,sha256=0MV3P-_ainPaTxmRBGWKUVCEt14KJvuvEHmRB3OQ1Fs,176
|
|
27
27
|
nextrec/models/generative/tiger.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
28
|
nextrec/models/multi_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
nextrec/models/multi_task/
|
|
30
|
-
nextrec/models/multi_task/
|
|
31
|
-
nextrec/models/multi_task/
|
|
32
|
-
nextrec/models/multi_task/
|
|
33
|
-
nextrec/models/multi_task/
|
|
29
|
+
nextrec/models/multi_task/aitm.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
+
nextrec/models/multi_task/apg.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
+
nextrec/models/multi_task/cross_stitch.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
|
+
nextrec/models/multi_task/esmm.py,sha256=sagHib2lqXya2fiAC8CdmUe-FJdcQKvFz6kziN42YRU,5724
|
|
33
|
+
nextrec/models/multi_task/mmoe.py,sha256=16ZnaotUVxvYTSJp1Z1Zr3E1q3K2BdsmcYYCKhzaKWA,7830
|
|
34
|
+
nextrec/models/multi_task/pepnet.py,sha256=GXKt6vQL-tMLFp0k7Nxbdfs-XNaB2Fi_qYHlnHKLlYo,12998
|
|
35
|
+
nextrec/models/multi_task/ple.py,sha256=-ApSs_9cD0O5YbFE4MC0zP2Y5mjRRwl9I6CZ4eHpQQk,12408
|
|
36
|
+
nextrec/models/multi_task/poso.py,sha256=QSE3yW0Y-Gb5c1YtBh5Z_xle5MiA6uRF4gyrEWPmMpI,18543
|
|
37
|
+
nextrec/models/multi_task/share_bottom.py,sha256=mfP-_NjjYrTXAKFxZzA8LGNTc3paScTX3HbcQLKSoVg,5759
|
|
38
|
+
nextrec/models/multi_task/snr_trans.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
39
|
nextrec/models/ranking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
40
|
nextrec/models/ranking/afm.py,sha256=rTuLH_6GD8DXEu5GjuypdAXpyc-Ug4A2pIQ9y5mlA24,9177
|
|
36
41
|
nextrec/models/ranking/autoint.py,sha256=UVuVyinTxy29gw_0bI9aP6xYzg3fpDfN-11JjqgnM68,7026
|
|
37
42
|
nextrec/models/ranking/dcn.py,sha256=elRw4qEE9d8tYmZEqdGlE_l-_fQ5CacpVY1IrbyX6iQ,6466
|
|
38
|
-
nextrec/models/ranking/dcn_v2.py,sha256=
|
|
43
|
+
nextrec/models/ranking/dcn_v2.py,sha256=GNfFSFlv6SFgXMUYSo53BD7fy0vkCMCN7EyrtN2DmlY,10169
|
|
39
44
|
nextrec/models/ranking/deepfm.py,sha256=Y6gVcZzHeOxUAT5QT2I2y8hlrL0A9gG3L92xCshPs9E,4191
|
|
40
45
|
nextrec/models/ranking/dien.py,sha256=QtinHyg6kvbJPhPTC1KUTOngf8HFcsuEMBu3yyxOU2Y,18116
|
|
41
46
|
nextrec/models/ranking/din.py,sha256=kh9oAAq8WvLCoTtI0Im4gUZIlK8LC7jLgGclq-ucW3s,8605
|
|
@@ -57,25 +62,25 @@ nextrec/models/representation/mf.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
|
57
62
|
nextrec/models/representation/rqvae.py,sha256=JyZxVY9CibcdBGk97TxjG5O3WQC10_60tHNcP_qtegs,29290
|
|
58
63
|
nextrec/models/representation/s3rec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
64
|
nextrec/models/retrieval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
-
nextrec/models/retrieval/dssm.py,sha256=
|
|
61
|
-
nextrec/models/retrieval/dssm_v2.py,sha256=
|
|
62
|
-
nextrec/models/retrieval/mind.py,sha256=
|
|
63
|
-
nextrec/models/retrieval/sdm.py,sha256=
|
|
64
|
-
nextrec/models/retrieval/youtube_dnn.py,sha256=
|
|
65
|
+
nextrec/models/retrieval/dssm.py,sha256=ZPNmjkP5TfdfIRyqrgFTGDqkGnKSjbmmjh8vxwtpfGM,7006
|
|
66
|
+
nextrec/models/retrieval/dssm_v2.py,sha256=TV4t-W6n610T1dRwb4Ql71xDWUuM2TMjIO83KI79u0Y,6074
|
|
67
|
+
nextrec/models/retrieval/mind.py,sha256=AKTSf77Ae7e3YWchuIAjbDv6xrLR3CbGNG7YtPBYVTk,14175
|
|
68
|
+
nextrec/models/retrieval/sdm.py,sha256=LzUBec0Cd9YQUEDJJtQvue4DmfEzoh4hOOh91x1Dc6c,9647
|
|
69
|
+
nextrec/models/retrieval/youtube_dnn.py,sha256=ciD9RyBy19mfQcEoqw1UfydmVBsJvffDw-sXA9kHRiI,6470
|
|
65
70
|
nextrec/models/sequential/hstu.py,sha256=4-EUOQ4HTRG5MAhTA2b9FOOXXw8oyPxDBaaDFunkT6o,18979
|
|
66
71
|
nextrec/models/sequential/sasrec.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
72
|
nextrec/utils/__init__.py,sha256=jD73RLigxcHFP-rXBoPi2VUTKH7kE5vNMQkr4lW8UUY,2655
|
|
68
|
-
nextrec/utils/config.py,sha256=
|
|
73
|
+
nextrec/utils/config.py,sha256=WeGHjoQYA5SoC9B_uS3D6ChzKr9Z5n2fwE-8l6nsuLE,20425
|
|
69
74
|
nextrec/utils/console.py,sha256=RA3ZTjtUQXvueouSmXJNLkRjeUGQZesphwWjFMTbV4I,13577
|
|
70
75
|
nextrec/utils/data.py,sha256=pSL96mWjWfW_RKE-qlUSs9vfiYnFZAaRirzA6r7DB6s,24994
|
|
71
76
|
nextrec/utils/embedding.py,sha256=akAEc062MG2cD7VIOllHaqtwzAirQR2gq5iW7oKpGAU,1449
|
|
72
77
|
nextrec/utils/feature.py,sha256=E3NOFIW8gAoRXVrDhCSonzg8k7nMUZyZzMfCq9k73_A,623
|
|
73
78
|
nextrec/utils/loss.py,sha256=GBWQGpDaYkMJySpdG078XbeUNXUC34PVqFy0AqNS9N0,4578
|
|
74
|
-
nextrec/utils/model.py,sha256=
|
|
75
|
-
nextrec/utils/torch_utils.py,sha256=
|
|
79
|
+
nextrec/utils/model.py,sha256=dcAL2lXNXRzFfCHMfOM_gIDLH68IAezMosSmmOD3FiQ,5624
|
|
80
|
+
nextrec/utils/torch_utils.py,sha256=UQpWS7F3nITYqvx2KRBaQJc9oTowRkIvowhuQLt6NFM,11953
|
|
76
81
|
nextrec/utils/types.py,sha256=VhtLXUVvu0zAZVAUgRUML4FExRC-GH-ZmC1UiVSr3HE,1523
|
|
77
|
-
nextrec-0.4.
|
|
78
|
-
nextrec-0.4.
|
|
79
|
-
nextrec-0.4.
|
|
80
|
-
nextrec-0.4.
|
|
81
|
-
nextrec-0.4.
|
|
82
|
+
nextrec-0.4.25.dist-info/METADATA,sha256=AY7ejbF1WA7Z4EHCbZVKB-Flom6diV50LGwiUVt-auA,21859
|
|
83
|
+
nextrec-0.4.25.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
84
|
+
nextrec-0.4.25.dist-info/entry_points.txt,sha256=NN-dNSdfMRTv86bNXM7d3ZEPW2BQC6bRi7QP7i9cIps,45
|
|
85
|
+
nextrec-0.4.25.dist-info/licenses/LICENSE,sha256=2fQfVKeafywkni7MYHyClC6RGGC3laLTXCNBx-ubtp0,1064
|
|
86
|
+
nextrec-0.4.25.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|