zhusuan.invertible¶
RevNet¶
-
class
RevNet[source]¶ Bases:
torch.nn.modules.module.ModuleAn abc of reversible network,every subclass should implement both
_forwardand_inverseabstract method. return value of_forwardand_inverseis like(y, log_det_J), in whichyis the transformed tensor and log_det_J` is log-determinant of Jacobian.-
forward(*inputs, reverse=False, **kwargs)[source]¶ when using
model.forward(x, reverse=False)process going with_forward(x), when usingmodel.forward(x, reverse=True)process going with_inverse(x).
-
training: bool¶
-
RevSequential¶
-
class
RevSequential(layers)[source]¶ Bases:
zhusuan.invertible.base.RevNetthe RevSequential provide a invertible transform which contain a list of instance of RevNet. when forward passing with
reverse=False, the inputxgoes through every RevNet in the list also withreverse=Falsefrom begin to end , when forward passing withreverse=True, inputxgoes through every in the list also withreverse=Truefrom end to begin.- Parameters
layers – a list of RevNet instance.
-
training: bool¶
Coupling¶
-
class
Coupling(in_out_dim, mid_dim, hidden, mask_config)[source]¶ Bases:
zhusuan.invertible.base.RevNetcoupling layer class
- Parameters
in_out_dim – input/output dimensions.
mid_dim – number of units in a hidden layer.
hidden – number of hidden layers.
mask_config – 1 if transform odd units, 0 if transform even units.
-
training: bool¶
MaskCoupling¶
-
class
MaskCoupling(in_out_dim=- 1, mid_dim=- 1, hidden=- 1, mask=None, inner_nn=None)[source]¶ Bases:
zhusuan.invertible.base.RevNetA coupling layer Identify if keep same or do transform by mask
- Parameters
in_out_dim – input/output dimensions.
mid_dim – number of units in a hidden layer
hidden – number of hidden layers
mask – mask given by the user, often generated by function:~zhusuan.invertible.coupling.get_coupling_mask
-
training: bool¶
Scaling¶
-
class
Scaling(dim)[source]¶ Bases:
zhusuan.invertible.base.RevNetInitialize a (log-)scaling layer. when Forward pass, given class:
xas input tensor, it returns (y,log_det_J) whereyis transformed tensor byy=x*exp(log_scale)andlog_det_Jis log-determinant of Jacobian.- Parameters
dim – input/output dimensions.
-
training: bool¶
MaskedLinear¶
-
class
MaskedLinear(input_size, n_outputs, mask, cond_label_size=None)[source]¶ Bases:
torch.nn.modules.linear.LinearMADE building block layer
-
forward(x, cond_y=None)[source]¶ Defines the computation performed at every call.
Should be overridden by all subclasses.
Note
Although the recipe for forward pass needs to be defined within this function, one should call the
Moduleinstance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.
-
in_features: int¶
-
out_features: int¶
-
weight: torch.Tensor¶
-
MADE¶
-
class
MADE(input_size, hidden_size, n_hidden, cond_label_size=None, input_order='sequential', input_degrees=None, activation='relu')[source]¶ Bases:
zhusuan.invertible.base.RevNetMADE class
- Parameters
input_size – a scalar; dim of inputs
hidden_size – a scalar; dim of hidden layers
n_hidden – a scalar; number of hidden layers
activation – a str; activation function to use
input_order – a str or tensor; variable order for creating the autoregressive masks (sequential|random) or the order flipped from the previous layer in a stack of mades
conditional – a bool; whether model is conditional
-
static
create_mask(input_size, hidden_size, n_hidden, input_order='sequential', input_degrees=None)[source]¶ Mask generator for MADE & MAF (see MADE paper sec 4:https://arxiv.org/abs/1502.03509)
- Parameters
input_size – dim of inputs
hidden_size – dim of hidden layers
n_hidden – number of hidden layers
input_order – variable order for creating the autoregressive masks (sequential|random)
input_degrees – degrees provide by user
Returns: List of masks
-
training: bool¶