summaryrefslogtreecommitdiff
path: root/src/python/gudhi/tensorflow/rips_layer.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/python/gudhi/tensorflow/rips_layer.py')
-rw-r--r--src/python/gudhi/tensorflow/rips_layer.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/python/gudhi/tensorflow/rips_layer.py b/src/python/gudhi/tensorflow/rips_layer.py
index 97c2692d..e4d6d4c6 100644
--- a/src/python/gudhi/tensorflow/rips_layer.py
+++ b/src/python/gudhi/tensorflow/rips_layer.py
@@ -8,7 +8,7 @@ from ..rips_complex import RipsComplex
# The parameters of the model are the point coordinates.
-def _Rips(DX, max_edge, dimensions):
+def _Rips(DX, max_edge, dimensions, homology_coeff_field=11):
# Parameters: DX (distance matrix),
# max_edge (maximum edge length for Rips filtration),
# dimensions (homology dimensions)
@@ -16,7 +16,7 @@ def _Rips(DX, max_edge, dimensions):
# Compute the persistence pairs with Gudhi
rc = RipsComplex(distance_matrix=DX, max_edge_length=max_edge)
st = rc.create_simplex_tree(max_dimension=max(dimensions)+1)
- st.compute_persistence()
+ st.compute_persistence(homology_coeff_field=homology_coeff_field)
pairs = st.flag_persistence_generators()
L_indices = []
@@ -40,7 +40,7 @@ class RipsLayer(tf.keras.layers.Layer):
"""
TensorFlow layer for computing Rips persistence out of a point cloud
"""
- def __init__(self, dimensions, maximum_edge_length=np.inf, min_persistence=None, **kwargs):
+ def __init__(self, dimensions, maximum_edge_length=np.inf, min_persistence=None, homology_coeff_field=11, **kwargs):
"""
Constructor for the RipsLayer class
@@ -48,11 +48,13 @@ class RipsLayer(tf.keras.layers.Layer):
maximum_edge_length (float): maximum edge length for the Rips complex
dimensions (List[int]): homology dimensions
min_persistence (List[float]): minimum distance-to-diagonal of the points in the output persistence diagrams (default None, in which case 0. is used for all dimensions)
+ homology_coeff_field (int): homology field coefficient. Must be a prime number. Default value is 11. Max is 46337.
"""
super().__init__(dynamic=True, **kwargs)
self.max_edge = maximum_edge_length
self.dimensions = dimensions
self.min_persistence = min_persistence if min_persistence != None else [0. for _ in range(len(self.dimensions))]
+ self.hcf = homology_coeff_field
assert len(self.min_persistence) == len(self.dimensions)
def call(self, X):
@@ -69,7 +71,7 @@ class RipsLayer(tf.keras.layers.Layer):
DX = tf.norm(tf.expand_dims(X, 1)-tf.expand_dims(X, 0), axis=2)
# Compute vertices associated to positive and negative simplices
# Don't compute gradient for this operation
- indices = _Rips(DX.numpy(), self.max_edge, self.dimensions)
+ indices = _Rips(DX.numpy(), self.max_edge, self.dimensions, self.hcf)
# Get persistence diagrams by simply picking the corresponding entries in the distance matrix
self.dgms = []
for idx_dim, dimension in enumerate(self.dimensions):