InvertibleConv2d¶
-
class
tfsnippet.layers.InvertibleConv2d(channels_last=True, strict_invertible=False, random_state=None, trainable=True, name=None, scope=None)¶ Bases:
tfsnippet.layers.flows.base.FeatureMappingFlowInvertible 1x1 2D convolution proposed in (Kingma & Dhariwal, 2018).
Attributes Summary
axisGet the feature axis/axes. explicitly_invertibleWhether or not this flow is explicitly invertible? nameGet the name of this object. require_batch_dimsWhether or not this flow requires batch dimensions. value_ndimsGet the number of value dimensions in both x and y. variable_scopeGet the variable scope of this object. x_value_ndimsGet the number of value dimensions in x. y_value_ndimsGet 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.
-