Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

layer_autoregressive_transform

An autoregressive normalizing flow layer, given a layer_autoregressive.


Description

Following Papamakarios et al. (2017), given an autoregressive model p(x) with conditional distributions in the location-scale family, we can construct a normalizing flow for p(x).

Usage

layer_autoregressive_transform(object, made, ...)

Arguments

object

Model or layer object

made

A Made layer, which must output two parameters for each input.

...

Additional parameters passed to Keras Layer.

Details

Specifically, suppose made is a [layer_autoregressive()] – a layer implementing a Masked Autoencoder for Distribution Estimation (MADE) – that computes location and log-scale parameters made(x)[i] for each input x[i]. Then we can represent the autoregressive model p(x) as x = f(u) where u is drawn from from some base distribution and where f is an invertible and differentiable function (i.e., a Bijector) and f^{-1}(x) is defined by:

library(tensorflow)
library(zeallot)
f_inverse <- function(x) {
  c(shift, log_scale) %<-% tf$unstack(made(x), 2, axis = -1L)
  (x - shift) * tf$math$exp(-log_scale)
}

Given a layer_autoregressive() made, a layer_autoregressive_transform() transforms an input tfd_* p(u) to an output tfd_* p(x) where x = f(u).

Value

a Keras layer

References

See Also


tfprobability

Interface to 'TensorFlow Probability'

v0.11.0.0
Apache License (>= 2.0)
Authors
Sigrid Keydana [aut, cre], Daniel Falbel [ctb], Kevin Kuo [ctb] (<https://orcid.org/0000-0001-7803-7901>), RStudio [cph]
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.