R/bijectors.R
tfb_rational_quadratic_spline.RdThis transformation represents a monotonically increasing piecewise rational
quadratic function. Outside of the bounds of knot_x/knot_y, the transform
behaves as an identity function.
tfb_rational_quadratic_spline( bin_widths, bin_heights, knot_slopes, range_min = -1, validate_args = FALSE, name = NULL )
| bin_widths | The widths of the spans between subsequent knot |
|---|---|
| bin_heights | The heights of the spans between subsequent knot |
| knot_slopes | The slope of the spline at each knot, a floating point
|
| range_min | The |
| validate_args | Logical, default FALSE. Whether to validate input with asserts. If validate_args is FALSE, and the inputs are invalid, correct behavior is not guaranteed. |
| name | name prefixed to Ops created by this class. |
a bijector instance.
Typically this bijector will be used as part of a chain, with splines for
trailing x dimensions conditioned on some of the earlier x dimensions, and
with the inverse then solved first for unconditioned dimensions, then using
conditioning derived from those inverses, and so forth.
For each argument, the innermost axis indexes bins/knots and batch axes
index axes of x/y spaces. A RationalQuadraticSpline with a separate
transform for each of three dimensions might have bin_widths shaped
[3, 32]. To use the same spline for each of x's three dimensions we may
broadcast against x and use a bin_widths parameter shaped [32].
Parameters will be broadcast against each other and against the input
x/ys, so if we want fixed slopes, we can use kwarg knot_slopes=1.
A typical recipe for acquiring compatible bin widths and heights would be:
nbins <- unconstrained_vector$shape[-1] range_min <- 1 range_max <- 1 min_bin_size = 1e-2 scale <- range_max - range_min - nbins * min_bin_size bin_widths = tf$math$softmax(unconstrained_vector) * scale + min_bin_size
For usage examples see tfb_forward(), tfb_inverse(), tfb_inverse_log_det_jacobian().
Other bijectors:
tfb_absolute_value(),
tfb_affine_linear_operator(),
tfb_affine_scalar(),
tfb_affine(),
tfb_ascending(),
tfb_batch_normalization(),
tfb_blockwise(),
tfb_chain(),
tfb_cholesky_outer_product(),
tfb_cholesky_to_inv_cholesky(),
tfb_correlation_cholesky(),
tfb_cumsum(),
tfb_discrete_cosine_transform(),
tfb_expm1(),
tfb_exp(),
tfb_ffjord(),
tfb_fill_scale_tri_l(),
tfb_fill_triangular(),
tfb_glow(),
tfb_gompertz_cdf(),
tfb_gumbel_cdf(),
tfb_gumbel(),
tfb_identity(),
tfb_inline(),
tfb_invert(),
tfb_iterated_sigmoid_centered(),
tfb_kumaraswamy_cdf(),
tfb_kumaraswamy(),
tfb_lambert_w_tail(),
tfb_masked_autoregressive_default_template(),
tfb_masked_autoregressive_flow(),
tfb_masked_dense(),
tfb_matrix_inverse_tri_l(),
tfb_matvec_lu(),
tfb_normal_cdf(),
tfb_ordered(),
tfb_pad(),
tfb_permute(),
tfb_power_transform(),
tfb_rayleigh_cdf(),
tfb_real_nvp_default_template(),
tfb_real_nvp(),
tfb_reciprocal(),
tfb_reshape(),
tfb_scale_matvec_diag(),
tfb_scale_matvec_linear_operator(),
tfb_scale_matvec_lu(),
tfb_scale_matvec_tri_l(),
tfb_scale_tri_l(),
tfb_scale(),
tfb_shifted_gompertz_cdf(),
tfb_shift(),
tfb_sigmoid(),
tfb_sinh_arcsinh(),
tfb_sinh(),
tfb_softmax_centered(),
tfb_softplus(),
tfb_softsign(),
tfb_split(),
tfb_square(),
tfb_tanh(),
tfb_transform_diagonal(),
tfb_transpose(),
tfb_weibull_cdf(),
tfb_weibull()