Release notes
This is the 0.13 release of TensorFlow Probability. It is
tested and stable against TensorFlow version 2.5.0.
See the visual release notebook in [colab](https://colab.research.google.com/github/tensorflow/probability/blob/master/tensorflow_probability/examples/jupyter_notebooks/TFP_Release_Notebook_0_13_0.ipynb).
Change notes
- Distributions
- Adds `tfd.BetaQuotient`
- Adds `tfd.DeterminantalPointProcess`
- Adds `tfd.ExponentiallyModifiedGaussian`
- Adds `tfd.MatrixNormal` and `tfd.MatrixT`
- Adds `tfd.NormalInverseGaussian`
- Adds `tfd.SigmoidBeta`
- Adds `tfp.experimental.distribute.Sharded`
- Adds `tfd.BatchBroadcast`
- Adds `tfd.Masked`
- Adds JAX support for `tfd.Zipf`
- Adds Implicit Reparameterization Gradients to `tfd.InverseGaussian`.
- Adds quantiles for `tfd.{Chi2,ExpGamma,Gamma,GeneralizedNormal,InverseGamma}`
- Derive `Distribution` batch shapes automatically from parameter annotations.
- Ensuring `Exponential.cdf(x)` is always 0 for `x < 0`.
- `VectorExponentialLinearOperator` and `VectorExponentialDiag` distributions now return variance, covariance, and standard deviation of the correct shape.
- `Bates` distribution now returns mean of the correct shape.
- `GeneralizedPareto` now returns variance of the correct shape.
- `Deterministic` distribution now returns mean, mode, and variance of the correct shape.
- Ensure that `JointDistributionPinned`'s support bijectors respect autobatching.
- Now systematically testing log_probs of most distributions for numerical accuracy.
- `InverseGaussian` no longer emits negative samples for large `loc / concentration`
- `GammaGamma`, `GeneralizedExtremeValue`, `LogLogistic`, `LogNormal`, `ProbitBernoulli` should no longer compute `nan` log_probs on their own samples. `VonMisesFisher`, `Pareto`, and `GeneralizedExtremeValue` should no longer emit samples numerically outside their support.
- Improve numerical stability of `tfd.ContinuousBernoulli` and deprecate `lims` parameter.
- Bijectors
- Add bijectors to mimic `tf.nest.flatten` (`tfb.tree_flatten`) and `tf.nest.pack_sequence_as` (`tfb.pack_sequence_as`).
- Adds `tfp.experimental.bijectors.Sharded`
- Remove deprecated `tfb.ScaleTrilL`. Use `tfb.FillScaleTriL` instead.
- Adds `cls.parameter_properties()` annotations for Bijectors.
- Extend range `tfb.Power` to all reals for odd integer powers.
- Infer the log-deg-jacobian of scalar bijectors using autodiff, if not otherwise specified.
- MCMC
- MCMC diagnostics support arbitrary structures of states, not just lists.
- `remc_thermodynamic_integrals` added to `tfp.experimental.mcmc`
- Adds `tfp.experimental.mcmc.windowed_adaptive_hmc`
- Adds an experimental API for initializing a Markov chain from a near-zero uniform distribution in unconstrained space. `tfp.experimental.mcmc.init_near_unconstrained_zero`
- Adds an experimental utility for retrying Markov Chain initialization until an acceptable point is found. `tfp.experimental.mcmc.retry_init`
- Shuffling experimental streaming MCMC API to slot into tfp.mcmc with a minimum of disruption.
- Adds `ThinningKernel` to `experimental.mcmc`.
- Adds `experimental.mcmc.run_kernel` driver as a candidate streaming-based replacement to `mcmc.sample_chain`
- VI
- Adds `build_split_flow_surrogate_posterior` to `tfp.experimental.vi` to build structured VI surrogate posteriors from normalizing flows.
- Adds `build_affine_surrogate_posterior` to `tfp.experimental.vi` for construction of ADVI surrogate posteriors from an event shape.
- Adds `build_affine_surrogate_posterior_from_base_distribution` to `tfp.experimental.vi` to enable construction of ADVI surrogate posteriors with correlation structures induced by affine transformations.
- MAP/MLE
- Added convenience method `tfp.experimental.util.make_trainable(cls)` to create trainable instances of distributions and bijectors.
- Math/linalg
- Add trapezoidal rule to tfp.math.
- Add `tfp.math.log_bessel_kve`.
- Add `no_pivot_ldl` to `experimental.linalg`.
- Add `marginal_fn` argument to `GaussianProcess` (see `no_pivot_ldl`).
- Added `tfp.math.atan_difference(x, y)`
- Add `tfp.math.erfcx`, `tfp.math.logerfc` and `tfp.math.logerfcx`
- Add `tfp.math.dawsn` for Dawson's Integral.
- Add `tfp.math.igammaincinv`, `tfp.math.igammacinv`.
- Add `tfp.math.sqrt1pm1`.
- Add `LogitNormal.stddev_approx` and `LogitNormal.variance_approx`
- Add `tfp.math.owens_t` for the Owen's T function.
- Add `bracket_root` method to automatically initialize bounds for a root search.
- Add Chandrupatla's method for finding roots of scalar functions.
- Stats
- `tfp.stats.windowed_mean` efficiently computes windowed means.
- `tfp.stats.windowed_variance` efficiently and accurately computes windowed variances.
- `tfp.stats.cumulative_variance` efficiently and accurately computes cumulative variances.
- `RunningCovariance` and friends can now be initialized from an example Tensor, not just from explicit shape and dtype.
- Cleaner API for `RunningCentralMoments`, `RunningMean`, `RunningPotentialScaleReduction`.
- STS
- Speed up STS forecasting and decomposition using internal `tf.function` wrapping.
- Add option to speed up filtering in `LinearGaussianSSM` when only the final step's results are required.
- Variational Inference with Multipart Bijectors: [example notebook with the Radon model](https://www.tensorflow.org/probability/examples/Variational_Inference_and_Joint_Distributions).
- Add experimental support for transforming any distribution into a preconditioning bijector.
- Other
- Distributed inference [example notebook](https://www.tensorflow.org/probability/examples/Distributed_Inference_with_JAX)
- `sanitize_seed` is now available in the `tfp.random` namespace.
- Add `tfp.random.spherical_uniform`.
Huge thanks to all the contributors to this release!
- Abhinav Upadhyay
- axch
- Brian Patton
- Chris Jewell
- Christopher Suter
- colcarroll
- Dave Moore
- ebrevdo
- Emily Fertig
- Harald Husum
- Ivan Ukhov
- jballe
- jburnim
- Jeff Pollock
- Jensun Ravichandran
- JulianWgs
- junpenglao
- jvdillon
- j-wilson
- kateslin
- Kristian Hartikainen
- ksachdeva
- langmore
- leben
- mattjj
- Nicola De Cao
- Pavel Sountsov
- paweller
- phawkins
- Prasanth Shyamsundar
- Rene Jean Corneille
- Samuel Marks
- scottzhu
- sharadmv
- siege
- Simon Dirmeier
- Srinivas Vasudevan
- Thomas Markovich
- ursk
- Uzair
- vanderplas
- yileiyang
- ZeldaMariet
- Zichun Ye