Skip to content

Commit 20c8af2

Browse files
committed
+ Fix regularization_loss() (#135)
+ Optimize tokenizer (#134)
1 parent 556160e commit 20c8af2

File tree

68 files changed

+78
-705
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+78
-705
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
[Doing] Add support for saving pb file, exporting embeddings
55
[Doing] Add support of multi-gpu training
66

7+
**FuxiCTR v2.3.7, 2024-12-29**
8+
+ [Fix] Fix regularization_loss() when feature_encoders exist ([#135](https://github.com/reczoo/FuxiCTR/issues/135))
9+
710
**FuxiCTR v2.3.6, 2024-12-28**
811
+ [Fix] Fix init_weights() for PretrainedEmbedding by modifying embedding_initializer ([#126](https://github.com/reczoo/FuxiCTR/issues/126))
912
+ [Fix] Fix get_mask issue when num_heads > 1 ([#130](https://github.com/reczoo/FuxiCTR/issues/130))

README.md

+2-3
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ Click-through rate (CTR) prediction is a critical task for various industrial ap
7474
| 38 | SIGIR'23 | [EulerNet](./model_zoo/EulerNet) | [EulerNet: Adaptive Feature Interaction Learning via Euler's Formula for CTR Prediction](https://dl.acm.org/doi/10.1145/3539618.3591681) :triangular_flag_on_post:**Huawei** | [:arrow_upper_right:](https://github.com/Ethan-TZ/EulerNet/tree/main/%23Code4FuxiCTR%23) | `torch` |
7575
| 39 | CIKM'23 | [GDCN](./model_zoo/GDCN) | [Towards Deeper, Lighter and Interpretable Cross Network for CTR Prediction](https://dl.acm.org/doi/pdf/10.1145/3583780.3615089) :triangular_flag_on_post:**Microsoft** | | `torch` |
7676
| 40 | ICML'24 | [WuKong](./model_zoo/WuKong) | [Wukong: Towards a Scaling Law for Large-Scale Recommendation](https://arxiv.org/abs/2403.02545) :triangular_flag_on_post:**Meta** | | `torch` |
77-
| 41 | Arxiv'24 | [DCNv3](./model_zoo/DCNv3) | [DCNv3: Towards Next Generation Deep Cross Network for Click-Through Rate Prediction](https://arxiv.org/abs/2407.13349) | [:arrow_upper_right:](https://github.com/salmon1802/DCNv3/tree/master/checkpoints) | `torch` |
7877
|<tr><th colspan=6 align="center">:open_file_folder: **Behavior Sequence Modeling**</th></tr>|
7978
| 42 | KDD'18 | [DIN](./model_zoo/DIN) | [Deep Interest Network for Click-Through Rate Prediction](https://www.kdd.org/kdd2018/accepted-papers/view/deep-interest-network-for-click-through-rate-prediction) :triangular_flag_on_post:**Alibaba** | [:arrow_upper_right:](https://github.com/reczoo/BARS/tree/main/ranking/ctr/DIN) | `torch` |
8079
| 43 | AAAI'19 | [DIEN](./model_zoo/DIEN) | [Deep Interest Evolution Network for Click-Through Rate Prediction](https://arxiv.org/abs/1809.03672) :triangular_flag_on_post:**Alibaba** | [:arrow_upper_right:](https://github.com/reczoo/BARS/tree/main/ranking/ctr/DIEN) | `torch` |
@@ -106,8 +105,8 @@ We have benchmarked FuxiCTR models on a set of open datasets as follows:
106105
FuxiCTR has the following dependencies:
107106

108107
+ python 3.9+
109-
+ pytorch 1.10+ (required only for torch models)
110-
+ tensorflow 2.1+ (required only for tensorflow models)
108+
+ pytorch 1.10.0--2.1.2 (if using for torch models)
109+
+ tensorflow 2.1 (if using for tensorflow models)
111110

112111
Please install other required packages via `pip install -r requirements.txt`.
113112

experiment/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
import sys
33
sys.path.append("../")
44
import fuxictr
5-
assert fuxictr.__version__ >= "2.2.0"
5+
assert fuxictr.__version__ >= "2.3.7"

fuxictr/preprocess/tokenizer.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,8 @@ def fit_on_texts(self, series):
5656
self.build_vocab(word_counts)
5757

5858
def build_vocab(self, word_counts):
59-
word_counts = word_counts.items()
6059
# sort to guarantee the determinism of index order
61-
word_counts = sorted(word_counts, key=lambda x: (-x[1], x[0]))
60+
word_counts = word_counts.most_common()
6261
if self._max_features: # keep the most frequent features
6362
word_counts = word_counts[0:self._max_features]
6463
words = []

fuxictr/pytorch/models/rank_model.py

+16-14
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import torch
2222
import os, sys
2323
import logging
24+
from fuxictr.pytorch.layers import FeatureEmbeddingDict
2425
from fuxictr.metrics import evaluate_metrics
2526
from fuxictr.pytorch.torch_utils import get_device, get_optimizer, get_loss, get_regularizer
2627
from fuxictr.utils import Monitor, not_in_whitelist
@@ -65,23 +66,24 @@ def compile(self, optimizer, loss, lr):
6566
self.loss_fn = get_loss(loss)
6667

6768
def regularization_loss(self):
68-
reg_loss = 0
69+
reg_term = 0
6970
if self._embedding_regularizer or self._net_regularizer:
7071
emb_reg = get_regularizer(self._embedding_regularizer)
7172
net_reg = get_regularizer(self._net_regularizer)
72-
for _, module in self.named_modules():
73-
for p_name, param in module.named_parameters():
74-
if param.requires_grad:
75-
if p_name in ["weight", "bias"]:
76-
if type(module) == nn.Embedding:
77-
if self._embedding_regularizer:
78-
for emb_p, emb_lambda in emb_reg:
79-
reg_loss += (emb_lambda / emb_p) * torch.norm(param, emb_p) ** emb_p
80-
else:
81-
if self._net_regularizer:
82-
for net_p, net_lambda in net_reg:
83-
reg_loss += (net_lambda / net_p) * torch.norm(param, net_p) ** net_p
84-
return reg_loss
73+
emb_params = set()
74+
for m_name, module in self.named_modules():
75+
if type(module) == FeatureEmbeddingDict:
76+
for p_name, param in module.named_parameters():
77+
if param.requires_grad:
78+
emb_params.add(".".join([m_name, p_name]))
79+
for emb_p, emb_lambda in emb_reg:
80+
reg_term += (emb_lambda / emb_p) * torch.norm(param, emb_p) ** emb_p
81+
for name, param in self.named_parameters():
82+
if param.requires_grad:
83+
if name not in emb_params:
84+
for net_p, net_lambda in net_reg:
85+
reg_term += (net_lambda / net_p) * torch.norm(param, net_p) ** net_p
86+
return reg_term
8587

8688
def add_loss(self, return_dict, y_true):
8789
loss = self.loss_fn(return_dict["y_pred"], y_true, reduction='mean')

fuxictr/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__="2.3.6"
1+
__version__="2.3.7"

model_zoo/AFM/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"

model_zoo/AFN/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"

model_zoo/AOANet/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"

model_zoo/APG/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"

model_zoo/AutoInt/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"

model_zoo/BST/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"

model_zoo/CCPM/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"

model_zoo/DCNv2/fuxictr_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# pip install -U fuxictr
22
import fuxictr
3-
assert fuxictr.__version__ >= "2.2.0"
3+
assert fuxictr.__version__ >= "2.3.7"

0 commit comments

Comments
 (0)