ActNorm¶
-
class
tfsnippet.layers.
ActNorm
(axis=-1, value_ndims=1, initialized=False, scale_type='exp', bias_regularizer=None, bias_constraint=None, log_scale_regularizer=None, log_scale_constraint=None, scale_regularizer=None, scale_constraint=None, trainable=True, epsilon=1e-06, name=None, scope=None)¶ Bases:
tfsnippet.layers.flows.base.FeatureMappingFlow
ActNorm proposed by (Kingma & Dhariwal, 2018).
y = (x + bias) * scale; log_det = y / scale - bias
bias and scale are initialized such that y will have zero mean and unit variance for the initial mini-batch of x. It can be initialized only through the forward pass. You may need to use
BaseFlow.invert()
to get a inverted flow if you need to initialize the parameters via the opposite direction.Attributes Summary
axis
Get the feature axis/axes. explicitly_invertible
Whether or not this flow is explicitly invertible? name
Get the name of this object. require_batch_dims
Whether or not this flow requires batch dimensions. value_ndims
Get the number of value dimensions in both x and y. variable_scope
Get the variable scope of this object. x_value_ndims
Get the number of value dimensions in x. y_value_ndims
Get the number of value dimensions in y. Methods Summary
__call__
(…) <==> x(…)apply
(input)Apply the layer on input, to produce output. build
([input])Build the layer, creating all required variables. inverse_transform
(y[, compute_x, …])Transform y into x, and compute the log-determinant of f^{-1} at y (i.e., \(\log \det \frac{\partial f^{-1}(y)}{\partial y}\)). invert
()Get the inverted flow from this flow. transform
(x[, compute_y, compute_log_det, name])Transform x into y, and compute the log-determinant of f at x (i.e., \(\log \det \frac{\partial f(x)}{\partial x}\)). Attributes Documentation
-
axis
¶ Get the feature axis/axes.
Returns: - The feature axis/axes, as is specified
- in the constructor.
Return type: int or tuple[int]
-
explicitly_invertible
¶ Whether or not this flow is explicitly invertible?
If a flow is not explicitly invertible, then it only supports to transform x into y, and corresponding \(\log p(x)\) into \(\log p(y)\). It cannot compute \(\log p(y)\) directly without knowing x, nor can it transform x back into y.
Returns: - A boolean indicating whether or not the flow is explicitly
- invertible.
Return type: bool
-
name
¶ Get the name of this object.
-
require_batch_dims
¶ Whether or not this flow requires batch dimensions.
-
value_ndims
¶ Get the number of value dimensions in both x and y.
Returns: The number of value dimensions in both x and y. Return type: int
-
variable_scope
¶ Get the variable scope of this object.
-
x_value_ndims
¶ Get the number of value dimensions in x.
Returns: The number of value dimensions in x. Return type: int
-
y_value_ndims
¶ Get the number of value dimensions in y.
Returns: The number of value dimensions in y. Return type: int
Methods Documentation
-
__call__
(...) <==> x(...)¶
-
apply
(input)¶ Apply the layer on input, to produce output.
Parameters: input (Tensor or list[Tensor]) – The input tensor, or a list of input tensors. Returns: The output tensor, or a list of output tensors.
-
build
(input=None)¶ Build the layer, creating all required variables.
Parameters: input (Tensor or list[Tensor] or None) – If build()
is called withinapply()
, it will be the input tensor(s). Otherwise if it is called separately, it will beNone
.
-
inverse_transform
(y, compute_x=True, compute_log_det=True, name=None)¶ Transform y into x, and compute the log-determinant of f^{-1} at y (i.e., \(\log \det \frac{\partial f^{-1}(y)}{\partial y}\)).
Parameters: Returns: Return type: (tf.Tensor, tf.Tensor)
Raises: RuntimeError
– If both compute_x and compute_log_det are set toFalse
.RuntimeError
– If the flow is not explicitly invertible.
-
invert
()¶ Get the inverted flow from this flow.
The
transform()
will become theinverse_transform()
in the inverted flow, and theinverse_transform()
will become thetransform()
in the inverted flow.If the current flow has not been initialized, it must be initialized via
inverse_transform()
in the new flow.Returns: The inverted flow. Return type: tfsnippet.layers.InvertFlow
-
transform
(x, compute_y=True, compute_log_det=True, name=None)¶ Transform x into y, and compute the log-determinant of f at x (i.e., \(\log \det \frac{\partial f(x)}{\partial x}\)).
Parameters: Returns: Return type: (tf.Tensor, tf.Tensor)
Raises: RuntimeError
– If both compute_y and compute_log_det are set toFalse
.
-