parameters: (self, data)
docstring: Defines the Mahalanobis distance to the assigned Gaussian.
docstring_summary: Defines the Mahalanobis distance to the assigned Gaussian.
docstring_tokens: Defines the Mahalanobis distance to the assigned Gaussian .
function: def _define_distance_to_clusters(self, data):
      """Defines the Mahalanobis distance to the assigned Gaussian."""
      # TODO(xavigonzalvo): reuse (input - mean) * cov^-1 * (input -
      # mean) from log probability function.
      self._all_scores = []
      for shard in data:
        all_scores = []
        shard = tf.expand_dims(shard, 0)
        for c in xrange(self._num_classes):
          if self._covariance_type == FULL_COVARIANCE:
            cov = self._covs[c, :, :]
          elif self._covariance_type == DIAG_COVARIANCE:
            cov = tf.diag(self._covs[c, :])
          inverse = tf.matrix_inverse(cov + self._min_var)
          inv_cov = tf.tile(
              tf.expand_dims(inverse, 0),
              tf.pack([self._num_examples, 1, 1]))
          diff = tf.transpose(shard - self._means[c, :, :], perm=[1, 0, 2])
          m_left = tf.batch_matmul(diff, inv_cov)
          all_scores.append(tf.sqrt(tf.batch_matmul(
              m_left, tf.transpose(diff, perm=[0, 2, 1])
          )))
        self._all_scores.append(tf.reshape(
            tf.concat(1, all_scores),
            tf.pack([self._num_examples, self._num_classes])))
  
      # Distance to the associated class.
      self._all_scores = tf.concat(0, self._all_scores)
      assignments = tf.concat(0, self.assignments())
      rows = tf.to_int64(tf.range(0, self._num_examples))
      indices = tf.concat(1, [tf.expand_dims(rows, 1),
                              tf.expand_dims(assignments, 1)])
      self._scores = tf.gather_nd(self._all_scores, indices)
function_tokens: def _define_distance_to_clusters ( self , data ) : # TODO(xavigonzalvo): reuse (input - mean) * cov^-1 * (input - # mean) from log probability function. self . _all_scores = [ ] for shard in data : all_scores = [ ] shard = tf . expand_dims ( shard , 0 ) for c in xrange ( self . _num_classes ) : if self . _covariance_type == FULL_COVARIANCE : cov = self . _covs [ c , : , : ] elif self . _covariance_type == DIAG_COVARIANCE : cov = tf . diag ( self . _covs [ c , : ] ) inverse = tf . matrix_inverse ( cov + self . _min_var ) inv_cov = tf . tile ( tf . expand_dims ( inverse , 0 ) , tf . pack ( [ self . _num_examples , 1 , 1 ] ) ) diff = tf . transpose ( shard - self . _means [ c , : , : ] , perm = [ 1 , 0 , 2 ] ) m_left = tf . batch_matmul ( diff , inv_cov ) all_scores . append ( tf . sqrt ( tf . batch_matmul ( m_left , tf . transpose ( diff , perm = [ 0 , 2 , 1 ] ) ) ) ) self . _all_scores . append ( tf . reshape ( tf . concat ( 1 , all_scores ) , tf . pack ( [ self . _num_examples , self . _num_classes ] ) ) ) # Distance to the associated class. self . _all_scores = tf . concat ( 0 , self . _all_scores ) assignments = tf . concat ( 0 , self . assignments ( ) ) rows = tf . to_int64 ( tf . range ( 0 , self . _num_examples ) ) indices = tf . concat ( 1 , [ tf . expand_dims ( rows , 1 ) , tf . expand_dims ( assignments , 1 ) ] ) self . _scores = tf . gather_nd ( self . _all_scores , indices )