From ade442ce78d2660d39fb69e8d59bc551b3da3dbf Mon Sep 17 00:00:00 2001 From: tgupta6 <tgupta6@illinois.edu> Date: Wed, 19 Oct 2016 10:05:49 -0700 Subject: [PATCH] answer inference first transforms then bn then add different feat --- .../inference.py | 57 +++++++++++++++---- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/answer_classifier_cached_features/inference.py b/answer_classifier_cached_features/inference.py index 7f5d0c8..02da937 100644 --- a/answer_classifier_cached_features/inference.py +++ b/answer_classifier_cached_features/inference.py @@ -59,6 +59,8 @@ class AnswerInference(): # self.per_region_answer_scores = [None]*self.batch_size obj_atr_qa_feat = [None]*self.batch_size + q_a_feat_list = [None]*self.batch_size + obj_atr_det_list = [None]*self.batch_size for j in xrange(self.batch_size): if j==0: reuse_vars = False @@ -112,24 +114,45 @@ class AnswerInference(): yes_no_feat_, [self.num_regions, 1, 1]) - obj_atr_qa_feat[j] = tf.concat( + + obj_atr_det_list[j] = tf.concat( + 2, + [self.selected_noun_adjective[j], obj_det_feat, atr_det_feat]) + + q_a_feat_list[j] = tf.concat( 2, - [self.selected_noun_adjective[j], yes_no_feat_, obj_det_feat, atr_det_feat, q_feat, a_feat]) + [yes_no_feat_, q_feat, a_feat]) # obj_atr_qa_feat[j] = tf.expand_dims( # obj_atr_qa_feat[j], # 0) - obj_atr_qa_feat = tf.pack(obj_atr_qa_feat) - print obj_atr_qa_feat.get_shape() + self.obj_atr_det_packed = tf.pack(obj_atr_det_list) + self.q_a_feat_packed = tf.pack(q_a_feat_list) - self.per_region_answer_scores = layers.conv2d( - obj_atr_qa_feat, - 1, + self.obj_atr_det_conv_bn = self.conv_bn( + self.obj_atr_det_packed, 2500, - 'per_region_ans_score_conv_1', - func = None) + 'obj_atr_det_conv_bn') + + self.q_a_feat_conv_bn = self.conv_bn( + self.q_a_feat_packed, + 2500, + 'q_a_feat_conv_bn') + + self.obj_atr_qa_feat = tf.nn.relu( + self.obj_atr_det_conv_bn + self.q_a_feat_conv_bn) + + #obj_atr_qa_feat = tf.pack(obj_atr_qa_feat) + #print obj_atr_qa_feat.get_shape() + + # self.per_region_answer_scores = layers.conv2d( + # obj_atr_qa_feat, + # 1, + # 2500, + # 'per_region_ans_score_conv_1', + # func = None) self.per_region_answer_scores = tf.nn.relu( layers.batch_norm( @@ -197,7 +220,21 @@ class AnswerInference(): feats = tf.transpose(tf.pack(feats), [1,0,2]) return feats - + + def conv_bn(feat,out_dim,name): + conv_feat = layers.conv2d( + feat, + 1, + out_dim, + name, + func = None) + + bn_conv_feat = layers.batch_norm( + conv_feat, + tf.constant(self.is_training)) + + return bn_conv_feat + # def elementwise_product(self, obj_feat, atr_feat, ques_feat, ans_feat): # tiled_ques = tf.tile(tf.reshape(ques_feat,[1, -1]),[self.num_answers,1]) # qa_feat = tf.concat( -- GitLab