summaryrefslogtreecommitdiff
path: root/src/python/doc/perslay_params.md
diff options
context:
space:
mode:
Diffstat (limited to 'src/python/doc/perslay_params.md')
-rw-r--r--src/python/doc/perslay_params.md95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/python/doc/perslay_params.md b/src/python/doc/perslay_params.md
new file mode 100644
index 00000000..58537939
--- /dev/null
+++ b/src/python/doc/perslay_params.md
@@ -0,0 +1,95 @@
+PersLay parameters
+------------------
+
+In the following description of PersLay parameters, each parameter, or dictionary key, that contains `_init` in its name is optimized and learned by PersLay during training. If you do not want to optimize the vectorization, set the keys **train_vect** and **train_weight** to False.
+
+* The following keys are mandatory:
+ + layer
+ Either "PermutationEquivariant", "Image", "Landscape", "BettiCurve", "Entropy", "Exponential", "Rational" or "RationalHat". Type of the PersLay layer. "Image" is for `persistence images <https://arxiv.org/abs/1507.06217>`_, "Landscape" is for `persistence landscapes <http://www.jmlr.org/papers/volume16/bubenik15a/bubenik15a.pdf>`_, "Exponential", "Rational" and "RationalHat" are for `structure elements <http://jmlr.org/beta/papers/v20/18-358.html>`_, "PermutationEquivariant" is for the original DeepSet layer, defined in `this article <https://arxiv.org/abs/1703.06114>`_, "BettiCurve" is for `Betti curves <https://www.jstage.jst.go.jp/article/tjsai/32/3/32_D-G72/_pdf>`_ and "Entropy" is for `entropy <https://arxiv.org/abs/1803.08304>`_.
+ + perm_op
+ Either "sum", "mean", "max", "topk". Permutation invariant operation.
+ + keep
+ Number of top values to keep. Used only if **perm_op** is "topk".
+ + pweight
+ Either "power", "grid", "gmix" or None. Weight function to be applied on persistence diagram points. If "power", this function is a (trainable) coefficient times the distances to the diagonal of the points to a certain power. If "grid", this function is piecewise-constant and defined with pixel values of a grid. If "gmix", this function is defined as a mixture of Gaussians. If None, no weighting is applied.
+ + final_model
+ A Tensorflow / Keras model used to postprocess the persistence diagrams in each channel. Use "identity" if you don't want to postprocess.
+* Depending on what **pweight** is, the following additional keys are requested:
+ + if **pweight** is "power":
+ - pweight_init
+ Initializer of the coefficient of the power weight function. It can be either a single value, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ - pweight_power
+ Integer used for exponentiating the distances to the diagonal of the persistence diagram points.
+ + if **pweight** is "grid":
+ - pweight_size
+ Grid size of the grid weight function. It is a tuple of integer values, such as (10,10).
+ - pweight_bnds
+ Grid boundaries of the grid weight function. It is a tuple containing two tuples, each containing the minimum and maximum values of each axis of the plane. Example: ((-0.01, 1.01), (-0.01, 1.01)).
+ - pweight_init
+ Initializer for the pixel values of the grid weight function. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ + if **pweight** is "gmix":
+ - pweight_num
+ Number of Gaussian functions of the mixture of Gaussians weight function.
+ - pweight_init
+ Initializer of the means and variances of the mixture of Gaussians weight function. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+* Depending on what **layer** is, the following additional keys are requested:
+ + if **layer** is "PermutationEquivariant":
+ - lpeq
+ Sequence of permutation equivariant operations, as defined in [the DeepSet article](). It is a list of tuples of the form (*dim*, *operation*). Each tuple defines a permutation equivariant function of dimension *dim* and second permutation operation *operation* (string, either "max", "min", "sum" or None). Second permutation operation is optional and is not applied if *operation* is set to None. Example: [(150, "max"), (75, None)].
+ - lweight_init
+ Initializer for the weight matrices of the permutation equivariant operations. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ - lbias_init
+ Initializer for the biases of the permutation equivariant operations. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ - lgamma_init
+ Initializer for the Gamma matrices of the permutation equivariant operations. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ + if **layer** is "Image":
+ - image_size
+ Persistence image size. It is a tuple of integer values, such as (10,10).
+ - image_bnds
+ Persistence image boundaries. It is a tuple containing two tuples, each containing the minimum and maximum values of each axis of the plane. Example: ((-0.01, 1.01), (-0.01, 1.01)).
+ - lvariance_init
+ Initializer for the bandwidths of the Gaussian functions centered on the persistence image pixels. It can be either a single value, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 3.).
+ + if **layer** is "Landscape":
+ - lsample_num
+ Number of samples of the diagonal that will be evaluated on the persistence landscapes.
+ - lsample_init
+ Initializer of the samples of the diagonal. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ + if **layer** is "BettiCurve":
+ - lsample_num
+ Number of samples of the diagonal that will be evaluated on the Betti curves.
+ - lsample_init
+ Initializer of the samples of the diagonal. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ - theta
+ Sigmoid parameter used for approximating the piecewise constant functions associated to the persistence diagram points.
+ + if **layer** is "Entropy":
+ - lsample_num
+ Number of samples on the diagonal that will be evaluated on the persistence entropies.
+ - lsample_init
+ Initializer of the samples of the diagonal. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ - theta
+ Sigmoid parameter used for approximating the piecewise constant functions associated to the persistence diagram points.
+ + if **layer** is "Exponential":
+ - lnum
+ Number of exponential structure elements that will be evaluated on the persistence diagram points.
+ - lmean_init
+ Initializer of the means of the exponential structure elements. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ - lvariance_init
+ Initializer of the bandwidths of the exponential structure elements. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(3., 3.).
+ + if **layer** is "Rational":
+ - lnum
+ Number of rational structure elements that will be evaluated on the persistence diagram points.
+ - lmean_init
+ Initializer of the means of the rational structure elements. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ - lvariance_init
+ Initializer of the bandwidths of the rational structure elements. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(3., 3.).
+ - lalpha_init
+ Initializer of the exponents of the rational structure elements. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(3., 3.).
+ + if **layer** is "RationalHat":
+ - lnum
+ Number of rational hat structure elements that will be evaluated on the persistence diagram points.
+ - lmean_init
+ Initializer of the means of the rational hat structure elements. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(0., 1.).
+ - lr_init
+ Initializer of the threshold of the rational hat structure elements. It can be either a numpy array of values, or a random initializer from tensorflow, such as tensorflow.random_uniform_initializer(3., 3.).
+ - q
+ Norm parameter.