Build a scale-and-shift function using a multi-layer neural network.

This will be wrapped in a make_template to ensure the variables are only created once. It takes the d-dimensional input x[0:d] and returns the D-d dimensional outputs loc ('mu') and log_scale ('alpha').

The default template does not support conditioning and will raise an exception if condition_kwargs are passed to it. To use conditioning in Real NVP bijector, implement a conditioned shift/scale template that handles the condition_kwargs.

hidden_layers Python list-like of non-negative integer, scalars indicating the number of units in each hidden layer. Default: [512, 512]. </td> </tr><tr> <td>shift_only</td> <td> Pythonboolindicating if only theshiftterm shall be computed (i.e. NICE bijector). Default:False. </td> </tr><tr> <td>activation</td> <td> Activation function (callable). Explicitly setting toNoneimplies a linear activation. </td> </tr><tr> <td>name</td> <td> A name for ops managed by this function. Default: 'real_nvp_default_template'. </td> </tr><tr> <td>args</td> <td>tf.layers.densearguments. </td> </tr><tr> <td>*kwargs</td> <td>tf.layers.dense` keyword arguments.

shift Float-like Tensor of shift terms ('mu' in [Papamakarios et al. (2016)][1]).
log_scale Float-like Tensor of log(scale) terms ('alpha' in [Papamakarios et al. (2016)][1]).

NotImplementedError if rightmost dimension of inputs is unknown prior to graph execution, or if condition_kwargs is not empty.


[1]: George Papamakarios, Theo Pavlakou, and Iain Murray. Masked Autoregressive Flow for Density Estimation. In Neural Information Processing Systems, 2017.