import tensorflow as tf

                self.real_pc_pred, real_pc_end_points = self.get_pred(self.real_pc_rotated)
                self.real_pc_rot_loss = self.get_loss(self.real_pc_pred, self.rot_label_pl, real_pc_end_points)

            with tf.variable_scope('generator'):
                self.generator_out = self.generator(self.noise, self.n_output, **gen_kwargs)
                self.gen_out_rotated = self.rotate_n_angles(self.generator_out, self.rot_label_pl)
                self.gen_out_pred, gen_out_end_points = self.get_pred(self.gen_out_rotated)
                self.gen_out_rot_loss = self.get_loss(self.gen_out_pred, self.rot_label_pl, gen_out_end_points) #classification loss
                #need to fix
            if self.ms_task:
                with tf.variable_scope('mixed'):
                    #add fake pc as a rotation class
                    num_to_add = int(max(self.batch_size/self.num_angles, 1))
                    idx = tf.range(0, self.batch_size, 1)
                    idx = tf.random_shuffle(idx)[0:num_to_add]
                    self.fake_to_add = tf.gather(self.generator_out, idx)
                    self.mixed_pc = tf.concat([self.real_pc_rotated, self.fake_to_add], 0)
                    self.mixed_label = tf.concat([self.rot_label_pl, tf.constant(self.num_angles, shape = (num_to_add,))], axis = 0)
                    mixed_idx = tf.range(0, self.mixed_label.get_shape().as_list()[0], 1)
                    mixed_idx = tf.random_shuffle(mixed_idx)[0:self.batch_size]
