Ejemplo n.º 1
0
def main():
    command_line = parseArgs()
    path_to_train = './'+command_line.data+'/rsc15_train_full.txt'
    path_to_test = './' + command_line.data+'/rsc15_test.txt'
    path_to_train = path_to_test
    print(path_to_train)
    print(path_to_test)
    data = pd.read_csv(path_to_train, sep='\t', dtype={'ItemId': np.int64})
    valid = pd.read_csv(path_to_test, sep='\t', dtype={'ItemId': np.int64})

    args = Args()
    args.n_items = len(data['ItemId'].unique())

    args.learning_rate = command_line.lr
    args.is_training = command_line.train
    args.test_model = command_line.test
    args.hidden_act = command_line.hidden_act
    args.final_act = command_line.final_act
    args.loss = command_line.loss
    args.layers = command_line.layer
    args.batch_size = command_line.size
    args.n_epochs = command_line.epoch

    args.checkpoint_dir = command_line.checkpoint_dir
    args.dropout_p_hidden = 1.0 if args.is_training == 0 else command_line.dropout
    args.weight_decay = command_line.weight_decay
    args.rnn_size = command_line.rnn_size
    args.optimize = command_line.optimize
    args.evaluate_train = command_line.evaluate_train

    with tf.Session() as sess:
        print("\n\n\nBEGIN: Batch size: {}, Loss: {}".format(args.batch_size, args.loss))
        gru = model.GRU4Rec(sess, args)
        if args.is_training:
            print("Traing only")
            gru.fit(data)

    if not args.is_training:
        if args.evaluate_train == 1:
            valid = data
        result = []
        for i in range(0,args.n_epochs): #number epoch
            tf.reset_default_graph()
            with tf.Session() as eval_sess:

                args.test_model = i
                gru = model.GRU4Rec(eval_sess, args)
                res = evaluate.evaluate_model(gru, data, valid, batch_size=args.batch_size)
                print('Epoch {}\tRecall@20: {}\tMRR@20: {}'.format(i,res[0], res[1]))
                result.append(res)
        if args.evaluate_train == 1:
            with open(args.checkpoint_dir + '_result_in_train.txt', 'w') as file:
                for rs in result:
                    file.write('{}\t{}\n'.format(rs[0], rs[1]))
        else:
            with open(args.checkpoint_dir+'_result_'+str(args.batch_size)+'.txt','w') as file:
                for rs in result:
                    file.write('{}\t{}\n'.format(rs[0], rs[1]))
Ejemplo n.º 2
0
    def main():
        command_line = parseArgs()
        data = pd.read_csv(PATH_TO_TRAIN, sep='\t', dtype={'ItemId': np.int64})
        valid = pd.read_csv(PATH_TO_TEST, sep='\t', dtype={'ItemId': np.int64})
        # 参数
        args = Args()
        args.n_items = len(data['ItemId'].unique())
        args.layers = command_line.layer
        args.rnn_size = command_line.size
        args.n_epochs = command_line.epoch
        args.learning_rate = command_line.lr
        args.is_training = command_line.train
        args.test_model = command_line.test
        args.hidden_act = command_line.hidden_act
        args.final_act = command_line.final_act
        args.loss = command_line.loss
        args.dropout_p_hidden = 1.0 if args.is_training == 0 else command_line.dropout
        print(args.dropout_p_hidden)

        # print data stat
        data_stat = data_utils.DataUtils(data, valid, args)
        data_stat.session_stat()

        if not os.path.exists(args.checkpoint_dir):
            os.mkdir(args.checkpoint_dir)
        gpu_config = tf.ConfigProto()
        gpu_config.gpu_options.allow_growth = True
        with tf.Session(config=gpu_config) as sess:
            gru = model.GRU4Rec(sess, args)
            if args.is_training:
                gru.fit(data)
            else:
                res = evaluation.evaluate_sessions_batch(gru, data, valid)
                print('Recall@20: {}\tMRR@20: {}'.format(res[0], res[1]))
Ejemplo n.º 3
0
def main(_):
    #if not os.path.exists(FLAGS.checkpoint_dir):
    #    os.mkdir(FLAGS.checkpoint_dir)

    data = pd.read_csv(FLAGS.train, sep='\t')
    valid = pd.read_csv(FLAGS.test, sep='\t')

    FLAGS.n_items = len(data['ItemId'].unique())
    print("total_items:",FLAGS.n_items)

    gru4rec_hps = model.GRU4Rec_HParams(reset_after_session=FLAGS.reset_after_session, layers=FLAGS.layers,
                                        rnn_size=FLAGS.rnn_size, loss=FLAGS.loss, final_act=FLAGS.final_act,
                                        hidden_act=FLAGS.hidden_act, dropout_p_hidden=FLAGS.dropout_p_hidden,
                                        batch_size=FLAGS.batch_size, optimizer=FLAGS.optimizer, learning_rate=FLAGS.lr,
                                        decay=FLAGS.decay, decay_steps=FLAGS.decay_steps, sigma=FLAGS.sigma,
                                        grad_cap=FLAGS.grad_cap, init_as_normal=FLAGS.init_as_normal, n_sample=FLAGS.n_sample,
                                        sample_alpha=FLAGS.sample_alpha, smoothing=FLAGS.smoothing, n_epochs=FLAGS.n_epochs)

    session_hps = model.Session_HParams(n_items=FLAGS.n_items, session_key=FLAGS.session_key,
                                        item_key=FLAGS.item_key, time_key=FLAGS.time_key,
                                        train_random_order=FLAGS.train_random_order, time_sort=FLAGS.time_sort)

    gpu_config = tf.ConfigProto()
    gpu_config.gpu_options.allow_growth = True

    logger.info('rnn_size:%3s, batch_size:%3s, lr:%6s, optimizer:%5s',
      FLAGS.rnn_size, FLAGS.batch_size, FLAGS.lr,FLAGS.optimizer)

    with tf.Session(config=gpu_config) as sess:
        gru = model.GRU4Rec(gru4rec_hps, session_hps, sess, FLAGS.is_training)
        sess.run(tf.global_variables_initializer())
        gru.fit(data, valid)
Ejemplo n.º 4
0

if __name__ == '__main__':
    command_line = parseArgs()
    data = pd.read_csv(PATH_TO_TRAIN, sep='\t', dtype={'ItemId': np.int64})
    valid = pd.read_csv(PATH_TO_TEST, sep='\t', dtype={'ItemId': np.int64})
    args = Args()
    args.n_items = len(data['ItemId'].unique())
    args.layers = command_line.layer
    args.rnn_size = command_line.size
    args.n_epochs = command_line.epoch
    args.learning_rate = command_line.lr
    args.is_training = command_line.train
    args.test_model = command_line.test
    args.hidden_act = command_line.hidden_act
    args.final_act = command_line.final_act
    args.loss = command_line.loss
    args.dropout_p_hidden = 1.0 if args.is_training == 0 else command_line.dropout
    print(args.dropout_p_hidden)
    if not os.path.exists(args.checkpoint_dir):
        os.mkdir(args.checkpoint_dir)
    gpu_config = tf.ConfigProto()
    gpu_config.gpu_options.allow_growth = True
    with tf.Session(config=gpu_config) as sess:
        gru = model.GRU4Rec(sess, args)
        if args.is_training:
            gru.fit(data)
        else:
            res = evaluation.evaluate_sessions_batch(gru, data, valid)
            print('Recall@20: {}\tMRR@20: {}'.format(res[0], res[1]))
Ejemplo n.º 5
0
 ARGS.rnn_size = COMMAND_LINE.size
 ARGS.n_epochs = COMMAND_LINE.epoch
 ARGS.learning_rate = COMMAND_LINE.lr
 ARGS.is_training = COMMAND_LINE.train
 ARGS.test_model = COMMAND_LINE.test
 ARGS.hidden_act = COMMAND_LINE.hidden_act
 ARGS.final_act = COMMAND_LINE.final_act
 ARGS.loss = COMMAND_LINE.loss
 ARGS.dropout_p_hidden = 1.0 if ARGS.is_training == 0 else COMMAND_LINE.dropout
 print(ARGS.dropout_p_hidden)
 if not os.path.exists(ARGS.checkpoint_dir):
     os.mkdir(ARGS.checkpoint_dir)
 GPU_CONFIG = tf.ConfigProto()
 #GPU_CONFIG.gpu_options.allow_growth = True
 with tf.Session(config=GPU_CONFIG) as sess:
     GRU = model.GRU4Rec(sess, ARGS)
     START_TIME = time.time()
     if ARGS.is_training:
         OUTPUT = open('train_results.txt', 'w')
         GRU.fit(DATA)
         OUTPUT.close()
         TRAINING_TIME = time.time()
         print("Training time =", TRAINING_TIME - START_TIME, "seconds")
     else:
         TEST_OUTPUT = open('test_results.txt', 'w')
         print("\n\nEvaluating Model....\n", file=TEST_OUTPUT)
         RES = evaluation.evaluate_sessions_batch(GRU, DATA, DATA)
         print('Recall@1: {}'.format(RES[0][0]), file=TEST_OUTPUT)
         print('MRR@1: {}'.format(RES[1][0]), file=TEST_OUTPUT)
         print('Recall@2: {}'.format(RES[0][1]), file=TEST_OUTPUT)
         print('MRR@2: {}'.format(RES[1][1]), file=TEST_OUTPUT)
Ejemplo n.º 6
0
    args.dropout_p_hidden = 1.0 if args.is_training == 0 else 0.5

    # if not os.path.exists(args.checkpoint_dir):
    #     os.mkdir(args.checkpoint_dir)

    gpu_config = tf.ConfigProto()
    gpu_config.gpu_options.allow_growth = True

mrr_list = []

for i in range(10):
    params = find_param()
    print('param searching round =', i)
    print(params)
    args.layers = params['layers']
    args.rnn_size = params['rnn_size']
    args.learning_rate = float(params['learning_rate'])  # cast to float

    tf.reset_default_graph()
    with tf.Session(config=gpu_config) as sess:
        args.is_training = True
        gru = model.GRU4Rec(sess, args)
        gru.fit(data)

    tf.reset_default_graph()  # reset graph
    with tf.Session(config=gpu_config) as sess:
        args.is_training = False
        gru = model.GRU4Rec(sess, args)  # instantiate again
        res = evaluation.evaluate_sessions_batch(gru, data, valid)
        print('Recall@25: {}\tMRR@25: {} \n'.format(res[0], res[1]))