def LogME(f: tf.Tensor, y: tf.Tensor, regression=False): f = f.numpy().astype(np.float64) y = y.numpy() if regression: y = y.numpy().astype(np.float64) fh = f f = f.transpose() D, N = f.shape v, s, vh = np.linalg.svd(f @ fh, full_matrices=True) evidences = [] if regression: K = y.shape[1] for i in range(K): y_ = y[:, i] evidence = each_evidence(y_, f, fh, v, s, vh, N, D) evidences.append(evidence) else: K = int(y.max() + 1) for i in range(K): y_ = (y == i).astype(np.float64) evidence = each_evidence(y_, f, fh, v, s, vh, N, D) evidences.append(evidence) return np.mean(evidences)
def predictions_to_classes(self, predictions: tf.Tensor, best=True) -> pd.DataFrame: if best: return pd.DataFrame({ "class_id": predictions.argmax(-1), "score": predictions.max(-1) }).assign( label=lambda df: df.class_id.map(self.id_to_label.__getitem__)) return pd.DataFrame(predictions, columns=self.id_to_label)