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]))
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]))
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)
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]))
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)
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]))