コード例 #1
0
    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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
            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()