Пример #1
0
def _eval(sess, model):
    y_scores = []
    y_true = []
    for _, uij in data_uploder(test_set, feature_config_dict, test_batch_size):
        y_scores += list(model._eval(sess, uij))
        y_true += list(uij[-1])
    y_scores = np.array(y_scores).flatten()
    y_true = np.array(y_true).flatten()
    test_gauc = roc_auc_score(y_true, y_scores)
    all_result.append(test_gauc)
    print("Now auc is ", test_gauc)
    global best_auc
    if best_auc < test_gauc:
        best_auc = test_gauc
        model.save(sess, 'save_ffm_path/ckpt')
    pickle.dump(all_result, open("auc_ffm_all_result.pkl", "wb"))
    return None
Пример #2
0
    feature_config_dict = pickle.load(f)

gpu_options = tf.GPUOptions(allow_growth=True)
with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess:
    model = Ffm(feature_config_dict)
    sess.run(tf.global_variables_initializer())
    sess.run(tf.local_variables_initializer())  #
    lr = 0.001
    start_time = time.time()
    for _ in range(50):

        random.shuffle(train_set)

        epoch_size = round(len(train_set) / train_batch_size)

        for _, uij in data_uploder(train_set, feature_config_dict,
                                   train_batch_size):

            loss = model.train(sess, uij, lr)

            if model.global_step.eval() % 1000 == 0:
                _eval(sess, model)

            if model.global_step.eval() % 336000 == 0:
                lr *= 0.9

        print('Epoch %d DONE\tCost time: %.2f' %
              (model.global_epoch_step.eval(), time.time() - start_time))

        sys.stdout.flush()
        model.global_epoch_step_op.eval()