# for feat in dense_features] dnn_feature_columns = sparse_feature_columns + dense_feature_columns linear_feature_columns = sparse_feature_columns + dense_feature_columns feature_names = get_fixlen_feature_names(linear_feature_columns + dnn_feature_columns) print(feature_names) train_model_input = [train[name] for name in feature_names] test_model_input = [test[name] for name in feature_names] print('PPPP') print(linear_feature_columns, dnn_feature_columns) model = xDeepFM_MTL(linear_feature_columns, dnn_feature_columns) model.compile("adagrad", loss={ 'finish': "binary_crossentropy", 'like': "binary_crossentropy" }, loss_weights=loss_weights) print(train_labels) history = model.fit(train_model_input, train_labels, batch_size=4096, epochs=2, verbose=1, validation_split=0.1)
for feat in sparse_features] dense_feature_list = [SingleFeat(feat, 0) for feat in dense_features] train = data.iloc[:train_size] test = data.iloc[train_size:] train_model_input = [train[feat.name].values for feat in sparse_feature_list] + \ [train[feat.name].values for feat in dense_feature_list] test_model_input = [test[feat.name].values for feat in sparse_feature_list] + \ [test[feat.name].values for feat in dense_feature_list] train_labels = [train[target[0]].values, train[target[1]].values] test_labels = [test[target[0]].values, test[target[1]].values] model = xDeepFM_MTL({"sparse": sparse_feature_list, "dense": dense_feature_list}) model.compile("adagrad", "binary_crossentropy", loss_weights=loss_weights, metrics=[auc]) if ONLINE_FLAG: history = model.fit(train_model_input, train_labels, batch_size=4096, epochs=1, verbose=1) pred_ans = model.predict(test_model_input, batch_size=2**14) else: history = model.fit(train_model_input, train_labels, batch_size=4096, epochs=1, verbose=1, validation_data=(test_model_input, test_labels)) if ONLINE_FLAG: result = test_data[['uid', 'item_id', 'finish', 'like']].copy() result.rename(columns={'finish': 'finish_probability', 'like': 'like_probability'}, inplace=True)
sequence_feature = [VarLenFeat('audio', 128, 128, 'max')] train = data.iloc[:train_size] test = data.iloc[train_size:] train_model_input = [train[feat.name].values for feat in sparse_feature_list] + \ [train[feat.name].values for feat in dense_feature_list] + [audio_data[:train_size]] test_model_input = [test[feat.name].values for feat in sparse_feature_list] + \ [test[feat.name].values for feat in dense_feature_list] + [audio_data[train_size:]] train_labels = [train[target[0]].values, train[target[1]].values] test_labels = [test[target[0]].values, test[target[1]].values] model = xDeepFM_MTL({ "sparse": sparse_feature_list, "dense": dense_feature_list, "sequence": sequence_feature }) model.compile( "adagrad", "binary_crossentropy", loss_weights=loss_weights, ) if ONLINE_FLAG: history = model.fit(train_model_input, train_labels, batch_size=4096, epochs=1, verbose=1) pred_ans = model.predict(test_model_input, batch_size=2**14)
dnn_feature_columns = fixlen_feature_columns linear_feature_columns = fixlen_feature_columns feature_names = get_feature_names(linear_feature_columns + dnn_feature_columns) train = data.iloc[:train_size] test = data.iloc[train_size:] train_model_input = {name: train[name] for name in feature_names} test_model_input = {name: test[name] for name in feature_names} train_labels = [train[target[0]].values, train[target[1]].values] test_labels = [test[target[0]].values, test[target[1]].values] model = xDeepFM_MTL(linear_feature_columns, dnn_feature_columns, dnn_hidden_units=(128, 128)) # model = xDeepFM_MTL({"sparse": sparse_feature_list, # "dense": dense_feature_list}) def auc(y_true, y_pred): auc = tf.metrics.auc(y_true, y_pred)[1] tf.keras.backend.get_session().run(tf.local_variables_initializer()) return auc model.compile( "adagrad", "binary_crossentropy", metrics=['binary_crossentropy', auc],
[test[feat.name].values for feat in dense_feature_list] train_labels = [train[target[0]].values, train[target[1]].values] test_labels = [test[target[0]].values, test[target[1]].values] embedding_size = 8 hidden_size = (256, 256) if VERSION == 3: embedding_size = 1 if VERSION == 4: embedding_size = 1 hidden_size = (64, 64) model = xDeepFM_MTL( { "sparse": sparse_feature_list, "dense": dense_feature_list }, embedding_size=embedding_size, hidden_size=hidden_size) model.compile("adagrad", loss='binary_crossentropy', loss_weights=loss_weights, metrics=[auroc]) my_callbacks = [ EarlyStopping(monitor='loss', min_delta=1e-2, patience=10, verbose=1, mode='min') ]