def test_inverse_transform_spd(self): point = spd.SPDMatrices(3).random_uniform(10) transformer = ToTangentSpace(geometry=spd.SPDMetricLogEuclidean(3)) X = transformer.fit_transform(X=point) result = transformer.inverse_transform(X) expected = point self.assertAllClose(expected, result, atol=1e-4) transformer = ToTangentSpace(geometry=spd.SPDMetricAffine(3)) X = transformer.fit_transform(X=point) result = transformer.inverse_transform(X) expected = point self.assertAllClose(expected, result, atol=1e-4)
def test_inverse_transform_hyperbolic(self): points = self.hyperbolic.random_uniform(10) transformer = ToTangentSpace(geometry=self.hyperbolic.metric) X = transformer.fit_transform(X=points) result = transformer.inverse_transform(X) expected = points self.assertAllClose(expected, result)
def test_inverse_transform_so(self): point = self.so_matrix.random_uniform(10) transformer = ToTangentSpace( geometry=self.so_matrix.bi_invariant_metric) X = transformer.transform(X=point, base_point=self.so_matrix.identity) result = transformer.inverse_transform( X, base_point=self.so_matrix.identity) expected = point self.assertAllClose(expected, result)
def test_inverse_transform_no_fit_sphere(self): point = self.sphere.random_uniform(3) base_point = point[0] point = point[1:] transformer = ToTangentSpace(geometry=self.sphere) X = transformer.transform(point, base_point=base_point) result = transformer.inverse_transform(X, base_point=base_point) expected = point self.assertAllClose(expected, result)
break features = np.concatenate((features, data[0].reshape((1, image_size)).numpy())) labels.append(data[1]) labels = np.array(labels) pca = PCA(n_components=2) features = pca.fit_transform(features) scaler = StandardScaler() features = scaler.fit_transform(features) * 3 features = np.concatenate((features, np.zeros_like(features[:, 0:1])), axis=1) sphere = Hypersphere(dim=2) transformer = ToTangentSpace(sphere) base_point = np.array([0, 0, 1]) s_points = transformer.inverse_transform(features, base_point) classifier = KNearestNeighborsClassifier() classifier.fit(s_points, labels) f_labels = [] def loss_f(x): label = classifier.predict(x[np.newaxis, :]) f_labels.append(label) return label == 0 fig = plt.figure(figsize=(10, 10)) ax = fig.add_subplot(111, projection='3d') plot_sphere = Sphere()