Skip to content

Commit c98a783

Browse files
committed
fix error when linear_feature_columns is empty in tf1.12
1 parent 353aa06 commit c98a783

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

deepctr/feature_column.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,8 @@ def get_linear_logit(features, feature_columns, units=1, use_bias=False, seed=10
180180
elif len(dense_input_list) > 0:
181181
dense_input = concat_func(dense_input_list)
182182
linear_logit = Linear(l2_reg, mode=1, use_bias=use_bias, seed=seed)(dense_input)
183-
else:
184-
# raise NotImplementedError
185-
return add_func([])
183+
else: #empty feature_columns
184+
return Lambda(lambda x: tf.constant([[0.0]]))(features.values()[0])
186185
linear_logit_list.append(linear_logit)
187186

188187
return concat_func(linear_logit_list)

examples/run_classification_criteo.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525

2626
# 2.count #unique features for each sparse field,and record dense feature field name
2727

28-
fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].max() + 1,embedding_dim=4 )
29-
for i,feat in enumerate(sparse_features)] + [DenseFeat(feat, 1,)
30-
for feat in dense_features]
28+
fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].max() + 1, embedding_dim=4)
29+
for i, feat in enumerate(sparse_features)] + [DenseFeat(feat, 1, )
30+
for feat in dense_features]
3131

3232
dnn_feature_columns = fixlen_feature_columns
3333
linear_feature_columns = fixlen_feature_columns
@@ -37,8 +37,8 @@
3737
# 3.generate input data for model
3838

3939
train, test = train_test_split(data, test_size=0.2, random_state=2020)
40-
train_model_input = {name:train[name] for name in feature_names}
41-
test_model_input = {name:test[name] for name in feature_names}
40+
train_model_input = {name: train[name] for name in feature_names}
41+
test_model_input = {name: test[name] for name in feature_names}
4242

4343
# 4.Define Model,train,predict and evaluate
4444
model = DeepFM(linear_feature_columns, dnn_feature_columns, task='binary')

tests/models/DCN_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@ def test_DCN(cross_num, hidden_size, sparse_feature_num, cross_parameterization)
2525
check_model(model, model_name, x, y)
2626

2727

28+
def test_DCN_2():
29+
model_name = "DCN"
30+
31+
sample_size = SAMPLE_SIZE
32+
x, y, feature_columns = get_test_data(sample_size, sparse_feature_num=3,
33+
dense_feature_num=2)
34+
35+
model = DCN([], feature_columns, cross_num=1, cross_parameterization=cross_parameterization,
36+
dnn_hidden_units=8, dnn_dropout=0.5)
37+
check_model(model, model_name, x, y)
38+
39+
2840
@pytest.mark.parametrize(
2941
'cross_num,hidden_size,sparse_feature_num',
3042
[(1, (8,), 3)

0 commit comments

Comments
 (0)