This 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
)
a bijector instance.
The widths of the spans between subsequent knot x
positions,
a floating point Tensor
. Must be positive, and at least 1-D. Innermost
axis must sum to the same value as bin_heights
. The knot x
positions
will be a first at range_min
, followed by knots at range_min + cumsum(bin_widths, axis=-1)
.
The heights of the spans between subsequent knot y
positions, a floating point Tensor
. Must be positive, and at least
1-D. Innermost axis must sum to the same value as bin_widths
. The knot
y
positions will be a first at range_min
, followed by knots at
range_min + cumsum(bin_heights, axis=-1)
.
The slope of the spline at each knot, a floating point
Tensor
. Must be positive. 1
s are implicitly padded for the first and
last implicit knots corresponding to range_min
and range_min + sum(bin_widths, axis=-1)
. Innermost axis size should be 1 less than
that of bin_widths
/bin_heights
, or 1 for broadcasting.
The x
/y
position of the first knot, which has implicit
slope 1
. range_max
is implicit, and can be computed as range_min + sum(bin_widths, axis=-1)
. Scalar floating point Tensor
.
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 prefixed to Ops created by this class.
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
/y
s, 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()