2424from ..layers .utils import NoMask , concat_fun
2525
2626
27- def DSIN (dnn_feature_columns , sess_feature_list , embedding_size = 8 , sess_max_count = 5 , sess_len_max = 10 , bias_encoding = False ,
27+ def DSIN (dnn_feature_columns , sess_feature_list , embedding_size = 8 , sess_max_count = 5 , bias_encoding = False ,
2828 att_embedding_size = 1 , att_head_num = 8 , dnn_hidden_units = (200 , 80 ), dnn_activation = 'sigmoid' , dnn_dropout = 0 ,
2929 dnn_use_bn = False , l2_reg_dnn = 0 , l2_reg_embedding = 1e-6 , init_std = 0.0001 , seed = 1024 , task = 'binary' ,
3030 ):
@@ -49,33 +49,12 @@ def DSIN(dnn_feature_columns, sess_feature_list, embedding_size=8, sess_max_coun
4949 :return: A Keras model instance.
5050
5151 """
52- #check_feature_config_dict(dnn_feature_columns)
5352
5453 if (att_embedding_size * att_head_num != len (sess_feature_list ) * embedding_size ):
5554 raise ValueError (
5655 "len(session_feature_lsit) * embedding_size must equal to att_embedding_size * att_head_num ,got %d * %d != %d *%d" % (
5756 len (sess_feature_list ), embedding_size , att_embedding_size , att_head_num ))
5857
59- # sparse_input, dense_input, user_behavior_input_dict, _, user_sess_length = get_input(
60- # dnn_feature_columns, sess_feature_list, sess_max_count, sess_len_max)
61-
62- # def get_input(feature_dim_dict, seq_feature_list, sess_max_count, seq_max_len):
63- # sparse_input, dense_input = build_input_features(feature_dim_dict)
64- # user_behavior_input = {}
65- # for idx in range(sess_max_count):
66- # sess_input = OrderedDict()
67- # for i, feat in enumerate(seq_feature_list):
68- # sess_input[feat] = Input(
69- # shape=(seq_max_len,), name='seq_' + str(idx) + str(i) + '-' + feat)
70- #
71- # user_behavior_input["sess_" + str(idx)] = sess_input
72- #
73- # user_behavior_length = {"sess_" + str(idx): Input(shape=(1,), name='seq_length' + str(idx)) for idx in
74- # range(sess_max_count)}
75- # user_sess_length = Input(shape=(1,), name='sess_length')
76- #
77- # return sparse_input, dense_input, user_behavior_input, user_behavior_length, user_sess_length
78-
7958
8059 features = build_input_features (dnn_feature_columns )
8160
@@ -85,15 +64,13 @@ def DSIN(dnn_feature_columns, sess_feature_list, embedding_size=8, sess_max_coun
8564 varlen_sparse_feature_columns = list (filter (lambda x : isinstance (x , VarLenSparseFeat ), dnn_feature_columns )) if dnn_feature_columns else []
8665
8766
88- history_feature_columns = []
67+
8968 sparse_varlen_feature_columns = []
9069 history_fc_names = list (map (lambda x : "sess" + x , sess_feature_list ))
91- #user_behavior_input_dict = {"sess_"+str(i):{} for i in range(sess_max_count)}
9270 for fc in varlen_sparse_feature_columns :
9371 feature_name = fc .name
9472 if feature_name in history_fc_names :
9573 continue
96- #history_feature_columns.append(fc)
9774 else :
9875 sparse_varlen_feature_columns .append (fc )
9976
@@ -106,13 +83,11 @@ def DSIN(dnn_feature_columns, sess_feature_list, embedding_size=8, sess_max_coun
10683 sess_input = OrderedDict ()
10784 for i , feat in enumerate (sess_feature_list ):
10885 sess_input [feat ] = features ["sess_" + str (idx )+ "_" + feat ]
109- #Input(shape=(seq_max_len,), name='seq_' + str(idx) + str(i) + '-' + feat)
86+
11087
11188 user_behavior_input_dict ["sess_" + str (idx )] = sess_input
11289
11390
114- #user_behavior_length = {"sess_" + str(idx): Input(shape=(1,), name='seq_length' + str(idx)) for idx in
115- # range(sess_max_count)}
11691 user_sess_length = Input (shape = (1 ,), name = 'sess_length' )
11792
11893
@@ -130,20 +105,12 @@ def DSIN(dnn_feature_columns, sess_feature_list, embedding_size=8, sess_max_coun
130105
131106
132107 query_emb_list = embedding_lookup (embedding_dict ,features ,sparse_feature_columns ,sess_feature_list ,sess_feature_list )#query是单独的
133- keys_emb_list = embedding_lookup (embedding_dict , features , history_feature_columns , history_fc_names , history_fc_names )
134108 dnn_input_emb_list = embedding_lookup (embedding_dict ,features ,sparse_feature_columns ,mask_feat_list = sess_feature_list )
135109 dense_value_list = get_dense_input (features , dense_feature_columns )
136110
137-
138-
139-
140- #query_emb_list = get_embedding_vec_list(sparse_embedding_dict, sparse_input, dnn_feature_columns["sparse"],
141- # sess_feature_list, sess_feature_list)
142-
143111 query_emb = concat_fun (query_emb_list )
144112
145- #dnn_input_emb_list = get_embedding_vec_list(sparse_embedding_dict, sparse_input, dnn_feature_columns["sparse"],
146- # mask_feat_list=sess_feature_list)
113+
147114 dnn_input_emb = concat_fun (dnn_input_emb_list )
148115 dnn_input_emb = Flatten ()(NoMask ()(dnn_input_emb ))
149116
@@ -167,9 +134,7 @@ def DSIN(dnn_feature_columns, sess_feature_list, embedding_size=8, sess_max_coun
167134
168135 dnn_input_emb = Concatenate ()(
169136 [dnn_input_emb , Flatten ()(interest_attention_layer ), Flatten ()(lstm_attention_layer )])
170- # if len(dense_input) > 0:
171- # deep_input_emb = Concatenate()(
172- # [deep_input_emb] + list(dense_input.values()))
137+
173138 dnn_input_emb = combined_dnn_input ([dnn_input_emb ],dense_value_list )
174139 output = DNN (dnn_hidden_units , dnn_activation , l2_reg_dnn ,
175140 dnn_dropout , dnn_use_bn , seed )(dnn_input_emb )
@@ -184,9 +149,6 @@ def DSIN(dnn_feature_columns, sess_feature_list, embedding_size=8, sess_max_coun
184149 [user_behavior_input_dict [sess_name ]]))
185150 # sess_input_length_list.append(user_behavior_length_dict[sess_name])
186151
187- # model_input_list = get_inputs_list([sparse_input, dense_input]) + sess_input_list + [
188- # user_sess_length]
189- #
190152
191153 model = Model (inputs = inputs_list + [user_sess_length ], outputs = output )
192154
0 commit comments