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