import tensorflow as tf

  """Adds the difference loss between the private and shared representations.

  Args:
    private_samples: a tensor of shape [num_samples, num_features].
    shared_samples: a tensor of shape [num_samples, num_features].
    weight: the weight of the incoherence loss.
    name: the name of the tf summary.
  """
  with tf.name_scope(name):
    private_samples -= tf.reduce_mean(private_samples, 0)
    shared_samples -= tf.reduce_mean(shared_samples, 0)

    private_samples = tf.nn.l2_normalize(private_samples, 1)
    shared_samples = tf.nn.l2_normalize(shared_samples, 1)

    correlation_matrix = tf.matmul(private_samples, shared_samples, transpose_a=True)
