latte.functional.interpolatability.smoothness

Module Contents

Functions

smoothness(z, a[, reg_dim, liad_mode, max_mode, ...])

Calculate latent smoothness.

smoothness(z, a, reg_dim=None, liad_mode='forward', max_mode='lehmer', ptp_mode='naive', reduce_mode='attribute', clamp=False, p=2.0)

Calculate latent smoothness.

Smoothness is a measure of how smoothly an attribute changes with respect to a change in the regularizing latent dimension. Smoothness of a latent vector \(\mathbf{z}\) is based on the concept of second-order derivative, and is given by

\[\operatorname{Smoothness}_{i,d}(\mathbf{z};\delta) = 1-\dfrac{\mathcal{C}_{k\in\mathfrak{K}}[\mathcal{D}_{i,d}^{(2)}(\mathbf{z} + k\delta\mathbf{e}_d;\delta )]}{\delta^{-1}\mathcal{R}_{k\in\mathfrak{K}}[\mathcal{D}_{i,d}^{(1)}(\mathbf{z} + k\delta\mathbf{e}_d;\delta )]},\]

where \(\mathcal{D}_{i,d}^{(n)}(z; \delta)\) is the \(n\) th order latent-induced attribute difference (LIAD) as defined below, \(\mathbf{e}_d\) is the \(d\) th elementary vector, \(\mathcal{C}_{k\in\mathfrak{K}}[\cdot]\) is the Lehmer mean (with p=2 by default) of its arguments over values of \(k\in\mathfrak{K}\), and \(\mathcal{R}_{k\in\mathfrak{K}}[\cdot]\) is the range of its arguments over values of \(k\in\mathfrak{K}\) (controlled by ptp_mode), and \(\mathfrak{K}\) is the set of interpolating points (controlled by z) used during evaluation.

The first-order LIAD is defined by

\[\mathcal{D}_{i, d}(\mathbf{z}; \delta) = \dfrac{\mathcal{A}_i(\mathbf{z}+\delta \mathbf{e}_d) - \mathcal{A}_i(\mathbf{z})}{\delta}\]

where \(\mathcal{A}_i(\cdot)\) is the measurement of attribute \(a_i\) from a sample generated from its latent vector argument, \(d\) is the latent dimension regularizing \(a_i\), \(\delta>0\) is the latent step size.

Higher-order LIADs are defined by

\[\mathcal{D}^{(n)}_{i, d}(\mathbf{z}; \delta) =\dfrac{{\mathcal{D}^{(n-1)}_i(\mathbf{z}+\delta \mathbf{e}_d) - \mathcal{D}^{(n-1)}_i(\mathbf{z})}}{\delta}.\]
Parameters:
  • z (np.ndarray, (n_samples, n_interp) or (n_samples, n_features or n_attributes, n_interp)) – a batch of latent vectors

  • a (np.ndarray, (n_samples, n_interp) or (n_samples, n_attributes, n_interp)) – a batch of attribute(s)

  • reg_dim (Optional[List], optional) – regularized dimensions, by default None Attribute a[:, i] is regularized by z[:, reg_dim[i]]. If None, a[:, i] is assumed to be regularized by z[:, i].

  • liad_mode (str, optional) – options for calculating LIAD, by default “forward”. Only “forward” is currently supported.

  • max_mode (str, optional) – options for calculating array maximum of 2nd order LIAD, by default “lehmer”. Must be one of {“lehmer”, “naive”}. If “lehmer”, the maximum is calculated using the Lehmer mean with power p. If “naive”, the maximum is calculated using the naive array maximum.

  • ptp_mode (str, optional) – options for calculating range of 1st order LIAD for normalization, by default “naive”. Must be either “naive” or a float value in (0.0, 1.0]. If “naive”, the range is calculated using the naive peak-to-peak range. If float, the range is taken to be the range between quantile 0.5-0.5*ptp_mode and quantile 0.5+0.5*ptp_mode.

  • reduce_mode (str, optional) – options for reduction of the return array, by default “attribute”. Must be one of {“attribute”, “samples”, “all”, “none”}. If “all”, returns a scalar. If “attribute”, an average is taken along the sample axis and the return array is of shape (n_attributes,). If “samples”, an average is taken along the attribute axis and the return array is of shape (n_samples,). If “none”, returns a smoothness matrix of shape (n_samples, n_attributes,).

  • clamp (bool, optional) – Whether to clamp smoothness to [0, 1], by default False

  • p (float, optional) – Lehmer mean power, by default 2.0 (i.e., contraharmonic mean). Only used if max_mode == “lehmer”. Must be greater than 1.0.

Returns:

smoothness array. See reduce mode for return shape.

Return type:

np.ndarray

References

[1]
    1. Watcharasupat, “Controllable Music: Supervised Learning of Disentangled Representations for Music Generation”, 2021.