-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- add EDCN model - fix savedmodel error in tf2.4 - fix typo in position encoding layer
- Loading branch information
Showing
25 changed files
with
491 additions
and
132 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
name: CI | ||
name: CI_TF2 | ||
|
||
on: | ||
on: | ||
push: | ||
path: | ||
- 'deepctr/*' | ||
|
@@ -9,17 +9,17 @@ on: | |
path: | ||
- 'deepctr/*' | ||
- 'tests/*' | ||
|
||
jobs: | ||
build: | ||
|
||
runs-on: ubuntu-latest | ||
timeout-minutes: 180 | ||
strategy: | ||
matrix: | ||
python-version: [3.6,3.7,3.8,3.9,3.10.7] | ||
tf-version: [1.4.0,1.15.0,2.6.0,2.7.0,2.8.0,2.9.0,2.10.0] | ||
python-version: [ 3.6,3.7,3.8, 3.9,3.10.7 ] | ||
tf-version: [ 2.6.0,2.7.0,2.8.0,2.9.0,2.10.0 ] | ||
|
||
exclude: | ||
- python-version: 3.7 | ||
tf-version: 1.4.0 | ||
|
@@ -64,31 +64,31 @@ jobs: | |
- python-version: 3.10.7 | ||
tf-version: 2.7.0 | ||
steps: | ||
|
||
- uses: actions/checkout@v3 | ||
|
||
- name: Setup python environment | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install dependencies | ||
run: | | ||
pip3 install -q tensorflow==${{ matrix.tf-version }} | ||
pip install -q protobuf==3.19.0 | ||
pip install -q requests | ||
pip install -e . | ||
- name: Test with pytest | ||
timeout-minutes: 180 | ||
run: | | ||
pip install -q pytest | ||
pip install -q pytest-cov | ||
pip install -q python-coveralls | ||
pytest --cov=deepctr --cov-report=xml | ||
- name: Upload coverage to Codecov | ||
uses: codecov/[email protected] | ||
with: | ||
token: ${{secrets.CODECOV_TOKEN}} | ||
file: ./coverage.xml | ||
flags: pytest | ||
name: py${{ matrix.python-version }}-tf${{ matrix.tf-version }} | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Setup python environment | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install dependencies | ||
run: | | ||
pip3 install -q tensorflow==${{ matrix.tf-version }} | ||
pip install -q protobuf==3.19.0 | ||
pip install -q requests | ||
pip install -e . | ||
- name: Test with pytest | ||
timeout-minutes: 180 | ||
run: | | ||
pip install -q pytest | ||
pip install -q pytest-cov | ||
pip install -q python-coveralls | ||
pytest --cov=deepctr --cov-report=xml | ||
- name: Upload coverage to Codecov | ||
uses: codecov/[email protected] | ||
with: | ||
token: ${{secrets.CODECOV_TOKEN}} | ||
file: ./coverage.xml | ||
flags: pytest | ||
name: py${{ matrix.python-version }}-tf${{ matrix.tf-version }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
name: CI_TF1 | ||
|
||
on: | ||
push: | ||
path: | ||
- 'deepctr/*' | ||
- 'tests/*' | ||
pull_request: | ||
path: | ||
- 'deepctr/*' | ||
- 'tests/*' | ||
|
||
jobs: | ||
build: | ||
|
||
runs-on: ubuntu-latest | ||
timeout-minutes: 180 | ||
strategy: | ||
matrix: | ||
python-version: [ 3.6,3.7 ] | ||
tf-version: [ 1.15.0 ] | ||
|
||
exclude: | ||
- python-version: 3.7 | ||
tf-version: 1.4.0 | ||
- python-version: 3.7 | ||
tf-version: 1.12.0 | ||
- python-version: 3.7 | ||
tf-version: 1.15.0 | ||
- python-version: 3.8 | ||
tf-version: 1.4.0 | ||
- python-version: 3.8 | ||
tf-version: 1.14.0 | ||
- python-version: 3.8 | ||
tf-version: 1.15.0 | ||
- python-version: 3.6 | ||
tf-version: 2.7.0 | ||
- python-version: 3.6 | ||
tf-version: 2.8.0 | ||
- python-version: 3.6 | ||
tf-version: 2.9.0 | ||
- python-version: 3.6 | ||
tf-version: 2.10.0 | ||
- python-version: 3.9 | ||
tf-version: 1.4.0 | ||
- python-version: 3.9 | ||
tf-version: 1.15.0 | ||
- python-version: 3.9 | ||
tf-version: 2.2.0 | ||
- python-version: 3.9 | ||
tf-version: 2.5.0 | ||
- python-version: 3.9 | ||
tf-version: 2.6.0 | ||
- python-version: 3.9 | ||
tf-version: 2.7.0 | ||
- python-version: 3.10.7 | ||
tf-version: 1.4.0 | ||
- python-version: 3.10.7 | ||
tf-version: 1.15.0 | ||
- python-version: 3.10.7 | ||
tf-version: 2.2.0 | ||
- python-version: 3.10.7 | ||
tf-version: 2.5.0 | ||
- python-version: 3.10.7 | ||
tf-version: 2.6.0 | ||
- python-version: 3.10.7 | ||
tf-version: 2.7.0 | ||
steps: | ||
|
||
- uses: actions/checkout@v3 | ||
|
||
- name: Setup python environment | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install dependencies | ||
run: | | ||
pip3 install -q tensorflow==${{ matrix.tf-version }} | ||
pip install -q protobuf==3.19.0 | ||
pip install -q requests | ||
pip install -e . | ||
- name: Test with pytest | ||
timeout-minutes: 180 | ||
run: | | ||
pip install -q pytest | ||
pip install -q pytest-cov | ||
pip install -q python-coveralls | ||
pytest --cov=deepctr --cov-report=xml | ||
- name: Upload coverage to Codecov | ||
uses: codecov/[email protected] | ||
with: | ||
token: ${{secrets.CODECOV_TOKEN}} | ||
file: ./coverage.xml | ||
flags: pytest | ||
name: py${{ matrix.python-version }}-tf${{ matrix.tf-version }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
from .utils import check_version | ||
|
||
__version__ = '0.9.2' | ||
__version__ = '0.9.3' | ||
check_version(__version__) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,8 @@ | |
Authors: | ||
Weichen Shen,[email protected], | ||
Harshit Pande | ||
Harshit Pande, | ||
Yi He, [email protected] | ||
""" | ||
|
||
|
@@ -26,6 +27,7 @@ | |
|
||
from .activation import activation_layer | ||
from .utils import concat_func, reduce_sum, softmax, reduce_mean | ||
from .core import DNN | ||
|
||
|
||
class AFMLayer(Layer): | ||
|
@@ -1489,3 +1491,69 @@ def get_config(self): | |
'regularizer': self.regularizer, | ||
}) | ||
return config | ||
|
||
|
||
class BridgeModule(Layer): | ||
"""Bridge Module used in EDCN | ||
Input shape | ||
- A list of two 2D tensor with shape: ``(batch_size, units)``. | ||
Output shape | ||
- 2D tensor with shape: ``(batch_size, units)``. | ||
Arguments | ||
- **bridge_type**: The type of bridge interaction, one of 'pointwise_addition', 'hadamard_product', 'concatenation', 'attention_pooling' | ||
- **activation**: Activation function to use. | ||
References | ||
- [Enhancing Explicit and Implicit Feature Interactions via Information Sharing for Parallel Deep CTR Models.](https://dlp-kdd.github.io/assets/pdf/DLP-KDD_2021_paper_12.pdf) | ||
""" | ||
|
||
def __init__(self, bridge_type='hadamard_product', activation='relu', **kwargs): | ||
self.bridge_type = bridge_type | ||
self.activation = activation | ||
|
||
super(BridgeModule, self).__init__(**kwargs) | ||
|
||
def build(self, input_shape): | ||
if not isinstance(input_shape, list) or len(input_shape) < 2: | ||
raise ValueError( | ||
'A `BridgeModule` layer should be called ' | ||
'on a list of 2 inputs') | ||
|
||
self.dnn_dim = int(input_shape[0][-1]) | ||
if self.bridge_type == "concatenation": | ||
self.dense = Dense(self.dnn_dim, self.activation) | ||
elif self.bridge_type == "attention_pooling": | ||
self.dense_x = DNN([self.dnn_dim, self.dnn_dim], self.activation, output_activation='softmax') | ||
self.dense_h = DNN([self.dnn_dim, self.dnn_dim], self.activation, output_activation='softmax') | ||
|
||
super(BridgeModule, self).build(input_shape) # Be sure to call this somewhere! | ||
|
||
def call(self, inputs, **kwargs): | ||
x, h = inputs | ||
if self.bridge_type == "pointwise_addition": | ||
return x + h | ||
elif self.bridge_type == "hadamard_product": | ||
return x * h | ||
elif self.bridge_type == "concatenation": | ||
return self.dense(tf.concat([x, h], axis=-1)) | ||
elif self.bridge_type == "attention_pooling": | ||
a_x = self.dense_x(x) | ||
a_h = self.dense_h(h) | ||
return a_x * x + a_h * h | ||
|
||
def compute_output_shape(self, input_shape): | ||
return (None, self.dnn_dim) | ||
|
||
def get_config(self): | ||
base_config = super(BridgeModule, self).get_config().copy() | ||
config = { | ||
'bridge_type': self.bridge_type, | ||
'activation': self.activation | ||
} | ||
config.update(base_config) | ||
return config |
Oops, something went wrong.