From 2d96cbd23beebc43baa2fde3e64541685334b813 Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Tue, 19 Mar 2019 08:53:15 -0700 Subject: [PATCH 01/10] Removing pkg-resources==0.0.0 because of error --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 3ed1fc1..2759b7a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,6 @@ jdcal==1.3 odfpy==1.3.5 olefile==0.44 openpyxl==2.4.9 -pkg-resources==0.0.0 pytz==2017.3 records==0.5.2 SQLAlchemy==1.1.14 From 62a085052949622d6379f9bfd0b85b39204f7664 Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Tue, 19 Mar 2019 08:55:58 -0700 Subject: [PATCH 02/10] Fixed index out of bounds --- sqlnet/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlnet/utils.py b/sqlnet/utils.py index 2311671..f5463b7 100644 --- a/sqlnet/utils.py +++ b/sqlnet/utils.py @@ -142,7 +142,7 @@ def epoch_train(model, optimizer, batch_size, sql_data, table_data, pred_entry): score = model.forward(q_seq, col_seq, col_num, pred_entry, gt_where=gt_where_seq, gt_cond=gt_cond_seq, gt_sel=gt_sel_seq) loss = model.loss(score, ans_seq, pred_entry, gt_where_seq) - cum_loss += loss.data.cpu().numpy()[0]*(ed - st) + cum_loss += loss.data.cpu().numpy()*(ed - st) optimizer.zero_grad() loss.backward() optimizer.step() From 156c159c2df4ee465576e669433044f08aa03ff4 Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Fri, 22 Mar 2019 20:16:55 -0700 Subject: [PATCH 03/10] adding logs --- sqlnet/utils.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sqlnet/utils.py b/sqlnet/utils.py index f5463b7..e8c0661 100644 --- a/sqlnet/utils.py +++ b/sqlnet/utils.py @@ -127,6 +127,11 @@ def to_batch_query(sql_data, idxes, st, ed): table_ids.append(sql_data[idxes[i]]['table_id']) return query_gt, table_ids +def pretty_print(vis_data): + print('question:', vis_data[0]) + print('headers: (%s)'%(' || '.join(vis_data[1]))) + print('query:', vis_data[2]) + def epoch_train(model, optimizer, batch_size, sql_data, table_data, pred_entry): model.train() perm=np.random.permutation(len(sql_data)) @@ -137,6 +142,14 @@ def epoch_train(model, optimizer, batch_size, sql_data, table_data, pred_entry): q_seq, col_seq, col_num, ans_seq, query_seq, gt_cond_seq = \ to_batch_seq(sql_data, table_data, perm, st, ed) + pretty_print(raw_data[0]) + print("q_seq: ", q_seq[0]) + print("col_seq: ", col_seq[0]) + print("col_num: ", col_num[0]) + print("ans_seq: ", ans_seq[0]) + print("query_seq: ", query_seq[0]) + print("gt_cond_seq: ", gt_cond_seq[0]) + gt_where_seq = model.generate_gt_where_seq(q_seq, col_seq, query_seq) gt_sel_seq = [x[1] for x in ans_seq] score = model.forward(q_seq, col_seq, col_num, pred_entry, From c7033a28c4a616d1ccc78008e586d3f5d474f1da Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Fri, 22 Mar 2019 20:22:57 -0700 Subject: [PATCH 04/10] overlooked --- sqlnet/utils.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/sqlnet/utils.py b/sqlnet/utils.py index e8c0661..15341b6 100644 --- a/sqlnet/utils.py +++ b/sqlnet/utils.py @@ -142,13 +142,6 @@ def epoch_train(model, optimizer, batch_size, sql_data, table_data, pred_entry): q_seq, col_seq, col_num, ans_seq, query_seq, gt_cond_seq = \ to_batch_seq(sql_data, table_data, perm, st, ed) - pretty_print(raw_data[0]) - print("q_seq: ", q_seq[0]) - print("col_seq: ", col_seq[0]) - print("col_num: ", col_num[0]) - print("ans_seq: ", ans_seq[0]) - print("query_seq: ", query_seq[0]) - print("gt_cond_seq: ", gt_cond_seq[0]) gt_where_seq = model.generate_gt_where_seq(q_seq, col_seq, query_seq) gt_sel_seq = [x[1] for x in ans_seq] @@ -211,6 +204,14 @@ def epoch_acc(model, batch_size, sql_data, table_data, pred_entry): ed = st+batch_size if st+batch_size < len(perm) else len(perm) q_seq, col_seq, col_num, ans_seq, query_seq, gt_cond_seq, raw_data = to_batch_seq(sql_data, table_data, perm, st, ed, ret_vis_data=True) + pretty_print(raw_data[0]) + print("q_seq: ", q_seq[0]) + print("col_seq: ", col_seq[0]) + print("col_num: ", col_num[0]) + print("ans_seq: ", ans_seq[0]) + print("query_seq: ", query_seq[0]) + print("gt_cond_seq: ", gt_cond_seq[0]) + raw_q_seq = [x[0] for x in raw_data] raw_col_seq = [x[1] for x in raw_data] query_gt, table_ids = to_batch_query(sql_data, perm, st, ed) From 60a4210ea0e14c06d2ef3bf97a1ee675e2b7969a Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Fri, 22 Mar 2019 20:44:34 -0700 Subject: [PATCH 05/10] new logs --- sqlnet/utils.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/sqlnet/utils.py b/sqlnet/utils.py index 15341b6..38a86e1 100644 --- a/sqlnet/utils.py +++ b/sqlnet/utils.py @@ -184,6 +184,7 @@ def epoch_exec_acc(model, batch_size, sql_data, table_data, db_path): ret_gt = engine.execute(tid, sql_gt['sel'], sql_gt['agg'], sql_gt['conds']) try: + print(tid, sql_pred['sel'], sql_pred['agg'], sql_pred['conds']) ret_pred = engine.execute(tid, sql_pred['sel'], sql_pred['agg'], sql_pred['conds']) except: @@ -204,13 +205,6 @@ def epoch_acc(model, batch_size, sql_data, table_data, pred_entry): ed = st+batch_size if st+batch_size < len(perm) else len(perm) q_seq, col_seq, col_num, ans_seq, query_seq, gt_cond_seq, raw_data = to_batch_seq(sql_data, table_data, perm, st, ed, ret_vis_data=True) - pretty_print(raw_data[0]) - print("q_seq: ", q_seq[0]) - print("col_seq: ", col_seq[0]) - print("col_num: ", col_num[0]) - print("ans_seq: ", ans_seq[0]) - print("query_seq: ", query_seq[0]) - print("gt_cond_seq: ", gt_cond_seq[0]) raw_q_seq = [x[0] for x in raw_data] raw_col_seq = [x[1] for x in raw_data] From 99723fce495855c4fe6b734cdf1ff822eee6deea Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Fri, 22 Mar 2019 20:58:12 -0700 Subject: [PATCH 06/10] added logs in dbengine --- sqlnet/lib/dbengine.py | 8 +++++++- sqlnet/utils.py | 5 ++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sqlnet/lib/dbengine.py b/sqlnet/lib/dbengine.py index 619c8b1..2acbe27 100644 --- a/sqlnet/lib/dbengine.py +++ b/sqlnet/lib/dbengine.py @@ -18,7 +18,7 @@ def __init__(self, fdb): def execute_query(self, table_id, query, *args, **kwargs): return self.execute(table_id, query.sel_index, query.agg_index, query.conditions, *args, **kwargs) - def execute(self, table_id, select_index, aggregation_index, conditions, lower=True): + def execute(self, table_id, select_index, aggregation_index, conditions, lower=True, isGold=False): if not table_id.startswith('table'): table_id = 'table_{}'.format(table_id.replace('-', '_')) table_info = self.db.query('SELECT sql from sqlite_master WHERE tbl_name = :name', name=table_id).all()[0].sql.replace('\n','') @@ -47,6 +47,12 @@ def execute(self, table_id, select_index, aggregation_index, conditions, lower=T if where_clause: where_str = 'WHERE ' + ' AND '.join(where_clause) query = 'SELECT {} AS result FROM {} {}'.format(select, table_id, where_str) + + if isGold: + print("Gold query: " + query) + else: + print("Pred query: " + query) + #print query out = self.db.query(query, **where_map) return [o.result for o in out] diff --git a/sqlnet/utils.py b/sqlnet/utils.py index 38a86e1..c7e2625 100644 --- a/sqlnet/utils.py +++ b/sqlnet/utils.py @@ -182,11 +182,10 @@ def epoch_exec_acc(model, batch_size, sql_data, table_data, db_path): for idx, (sql_gt, sql_pred, tid) in enumerate( zip(query_gt, pred_queries, table_ids)): ret_gt = engine.execute(tid, - sql_gt['sel'], sql_gt['agg'], sql_gt['conds']) + sql_gt['sel'], sql_gt['agg'], sql_gt['conds'], True) try: - print(tid, sql_pred['sel'], sql_pred['agg'], sql_pred['conds']) ret_pred = engine.execute(tid, - sql_pred['sel'], sql_pred['agg'], sql_pred['conds']) + sql_pred['sel'], sql_pred['agg'], sql_pred['conds'], False) except: ret_pred = None tot_acc_num += (ret_gt == ret_pred) From d33338ce6c3a7eb02d909d5714c3e97a76986749 Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Fri, 22 Mar 2019 21:03:39 -0700 Subject: [PATCH 07/10] changing required epochs --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ed0cab5..c46b1ea 100644 --- a/train.py +++ b/train.py @@ -121,7 +121,7 @@ torch.save(model.cond_pred.state_dict(), cond_m) if args.train_emb: torch.save(model.cond_embed_layer.state_dict(), cond_e) - for i in range(100): + for i in range(1): print 'Epoch %d @ %s'%(i+1, datetime.datetime.now()) print ' Loss = %s'%epoch_train( model, optimizer, BATCH_SIZE, From 9ed6f351b37dd94bc28082100c4360a8dc5c4470 Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Fri, 22 Mar 2019 21:25:24 -0700 Subject: [PATCH 08/10] added right variables --- sqlnet/utils.py | 9 +++++---- train.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sqlnet/utils.py b/sqlnet/utils.py index c7e2625..dd540a6 100644 --- a/sqlnet/utils.py +++ b/sqlnet/utils.py @@ -182,10 +182,10 @@ def epoch_exec_acc(model, batch_size, sql_data, table_data, db_path): for idx, (sql_gt, sql_pred, tid) in enumerate( zip(query_gt, pred_queries, table_ids)): ret_gt = engine.execute(tid, - sql_gt['sel'], sql_gt['agg'], sql_gt['conds'], True) + sql_gt['sel'], sql_gt['agg'], sql_gt['conds'], isGold=True) try: ret_pred = engine.execute(tid, - sql_pred['sel'], sql_pred['agg'], sql_pred['conds'], False) + sql_pred['sel'], sql_pred['agg'], sql_pred['conds'], isGold=False) except: ret_pred = None tot_acc_num += (ret_gt == ret_pred) @@ -204,6 +204,7 @@ def epoch_acc(model, batch_size, sql_data, table_data, pred_entry): ed = st+batch_size if st+batch_size < len(perm) else len(perm) q_seq, col_seq, col_num, ans_seq, query_seq, gt_cond_seq, raw_data = to_batch_seq(sql_data, table_data, perm, st, ed, ret_vis_data=True) + print(raw_data[0]) raw_q_seq = [x[0] for x in raw_data] raw_col_seq = [x[1] for x in raw_data] @@ -249,10 +250,10 @@ def epoch_reinforce_train(model, optimizer, batch_size, sql_data, table_data, db for idx, (sql_gt, sql_pred, tid) in enumerate( zip(query_gt, pred_queries, table_ids)): ret_gt = engine.execute(tid, - sql_gt['sel'], sql_gt['agg'], sql_gt['conds']) + sql_gt['sel'], sql_gt['agg'], sql_gt['conds'], isGold=True) try: ret_pred = engine.execute(tid, - sql_pred['sel'], sql_pred['agg'], sql_pred['conds']) + sql_pred['sel'], sql_pred['agg'], sql_pred['conds'], isGold=False) except: ret_pred = None diff --git a/train.py b/train.py index c46b1ea..64477f9 100644 --- a/train.py +++ b/train.py @@ -82,7 +82,7 @@ print "Init dev acc_ex: %s"%epoch_exec_acc( model, BATCH_SIZE, val_sql_data, val_table_data, DEV_DB) torch.save(model.cond_pred.state_dict(), cond_m) - for i in range(100): + for i in range(1): print 'Epoch %d @ %s'%(i+1, datetime.datetime.now()) print ' Avg reward = %s'%epoch_reinforce_train( model, optimizer, BATCH_SIZE, sql_data, table_data, TRAIN_DB) From cb024116b9468a2a12ae0f8c93237f89b7aceeec Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Fri, 22 Mar 2019 21:42:55 -0700 Subject: [PATCH 09/10] Added log for question --- sqlnet/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sqlnet/utils.py b/sqlnet/utils.py index dd540a6..aca3aab 100644 --- a/sqlnet/utils.py +++ b/sqlnet/utils.py @@ -181,6 +181,7 @@ def epoch_exec_acc(model, batch_size, sql_data, table_data, db_path): for idx, (sql_gt, sql_pred, tid) in enumerate( zip(query_gt, pred_queries, table_ids)): + print("question:", sql_data[idx]["question"]) ret_gt = engine.execute(tid, sql_gt['sel'], sql_gt['agg'], sql_gt['conds'], isGold=True) try: From d4c2ae99c44d4c37611b9d61732385529e21dcc2 Mon Sep 17 00:00:00 2001 From: SGS Venkatesh Date: Fri, 22 Mar 2019 21:43:13 -0700 Subject: [PATCH 10/10] removed log for raw_data --- sqlnet/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlnet/utils.py b/sqlnet/utils.py index aca3aab..939de88 100644 --- a/sqlnet/utils.py +++ b/sqlnet/utils.py @@ -205,7 +205,7 @@ def epoch_acc(model, batch_size, sql_data, table_data, pred_entry): ed = st+batch_size if st+batch_size < len(perm) else len(perm) q_seq, col_seq, col_num, ans_seq, query_seq, gt_cond_seq, raw_data = to_batch_seq(sql_data, table_data, perm, st, ed, ret_vis_data=True) - print(raw_data[0]) + # print(raw_data[0]) raw_q_seq = [x[0] for x in raw_data] raw_col_seq = [x[1] for x in raw_data]