cdq.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:aaai17-cdq 作者: caoyue10 项目源码 文件源码
def loss_functions(self):
        with tf.device(self.device):
            ### Loss Function
            ### O = L + \lambda (Q^x + Q^y)
            ### L = sum_{ij} (log (1 + exp(alpha * <u_i,v_j>)) - alpha * s_ij * <u_i, v_j>)
            ### Q^x = || u - C * b_x ||
            ### Q^y = || v - C * b_y ||
            ### InnerProduct Value \in [-15, 15]
            InnerProduct = tf.clip_by_value(tf.mul(self.alpha, tf.matmul(self.img_last_layer, tf.transpose(self.txt_last_layer))), -1.5e1, 1.5e1)
            Sim = tf.clip_by_value(tf.matmul(self.img_label, tf.transpose(self.txt_label)), 0.0, 1.0)
            t_ones = tf.ones([tf.shape(self.img_last_layer)[0], tf.shape(self.txt_last_layer)[0]])

            self.cross_entropy_loss = tf.reduce_mean(tf.sub(tf.log(tf.add(t_ones, tf.exp(InnerProduct))), tf.mul(Sim, InnerProduct)))

            self.cq_loss_img = tf.reduce_mean(tf.reduce_sum(tf.square(tf.sub(self.img_last_layer, tf.matmul(self.b_img, self.C))), 1))
            self.cq_loss_txt = tf.reduce_mean(tf.reduce_sum(tf.square(tf.sub(self.txt_last_layer, tf.matmul(self.b_txt, self.C))), 1))
            self.q_lambda = tf.Variable(self.cq_lambda, name='lambda')
            self.cq_loss = tf.mul(self.q_lambda, tf.add(self.cq_loss_img, self.cq_loss_txt))
            self.total_loss = tf.add(self.cross_entropy_loss, self.cq_loss)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号