niftynet.network.vae module

class VAE(w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='VAE')[source]

Bases: niftynet.layer.base_layer.TrainableLayer

### Description
This is a denoising, convolutional, variational autoencoder (VAE), composed of a sequence of {convolutions then downsampling} blocks, followed by a sequence of fully-connected layers, followed by a sequence of {transpose convolutions then upsampling} blocks. See Auto-Encoding Variational Bayes, Kingma & Welling, 2014. 2DO: share the fully-connected parameters between the mean and logvar decoders.

### Building Blocks [ENCODER] - See ConvEncoder class below [GAUSSIAN SAMPLER] - See GaussianSampler class below [DECODER] - See ConvDecoder class below

### Diagram

INPUT –> [ENCODER] –> [GAUSSIAN SAMPLER] –> [FCDEC] —> [DECODER] for means — OUTPUTS

——> [DECODER] for logvars —

### Constraints

__init__(w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='VAE')[source]
Parameters:
  • w_initializer – weight initialisation for network
  • w_regularizer – weight regularisation for network
  • b_initializer – bias initialisation for network
  • b_regularizer – bias regularisation for network
  • name – layer name
layer_op(images, is_training=True, **unused_kwargs)[source]
Parameters:
  • images – tensor, input to the network
  • is_training – boolean, True if network is in training mode
  • unused_kwargs – other conditional arguments, not in use
Returns:

posterior_means: means output by gaussian sampler for KL divergence posterior_logvars: log of variances output by gaussian sampler for KL divergence data_means: output of means decoder branch (predicted image) data_logvars: output of variances decoder branch (capturing aleatoric uncertainty) images: input data_variances: exp of data_logvars posterior_variances: exp of posterior_logvars sample: random sample from latent space (from gaussian sampler)

class ConvEncoder(denoising_variance, conv_output_channels, conv_kernel_sizes, conv_pooling_factors, acti_func_conv, layer_sizes_encoder, acti_func_encoder, serialised_shape, w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='ConvEncoder')[source]

Bases: niftynet.layer.base_layer.TrainableLayer

### Description
This is a generic encoder composed of {convolutions then downsampling} blocks followed by fully-connected layers.
__init__(denoising_variance, conv_output_channels, conv_kernel_sizes, conv_pooling_factors, acti_func_conv, layer_sizes_encoder, acti_func_encoder, serialised_shape, w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='ConvEncoder')[source]
Parameters:
  • denoising_variance – variance of gaussian noise to add to the input
  • conv_output_channels – array, number of output channels for each conv layer
  • conv_kernel_sizes – array, kernel sizes for each conv layer
  • conv_pooling_factors – array, stride values for downsampling convolutions
  • acti_func_conv – array, activation functions of each layer
  • layer_sizes_encoder – array, number of output channels for each encoding FC layer
  • acti_func_encoder – array, activation functions for each encoding FC layer
  • serialised_shape – array, flatten shape to enter the FC layers
  • w_initializer – weight initialisation for network
  • w_regularizer – weight regularisation for network
  • b_initializer – bias initialisation for network
  • b_regularizer – bias regularisation for network
  • name – layer name
layer_op(images, is_training)[source]
Parameters:
  • images – tensor, input to the network
  • is_training – boolean, True if network is in training mode
Returns:

tensor, output of the encoder branch

class GaussianSampler(number_of_latent_variables, number_of_samples_from_posterior, logvars_upper_bound, logvars_lower_bound, w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='gaussian_sampler')[source]

Bases: niftynet.layer.base_layer.TrainableLayer

### Description
This predicts the mean and logvariance parameters, then generates an approximate sample from the posterior.

### Diagram

### Constraints

__init__(number_of_latent_variables, number_of_samples_from_posterior, logvars_upper_bound, logvars_lower_bound, w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='gaussian_sampler')[source]
Parameters:
  • number_of_latent_variables – int, number of output channels for FC layer
  • number_of_samples_from_posterior – int, number of samples to draw from standard gaussian
  • logvars_upper_bound – upper bound of log of variances for clipping
  • logvars_lower_bound – lower bound of log of variances for clipping
  • w_initializer – weight initialisation for network
  • w_regularizer – weight regularisation for network
  • b_initializer – bias initialisation for network
  • b_regularizer – bias regularisation for network
  • name – layer name
layer_op(codes, is_training)[source]
Parameters:
  • codes – tensor, input latent space
  • is_training – boolean, True if network is in training mode
Returns:

samples from posterior distribution, means and log variances of the posterior distribution

class ConvDecoder(layer_sizes_decoder, acti_func_decoder, trans_conv_output_channels, trans_conv_kernel_sizes, trans_conv_unpooling_factors, acti_func_trans_conv, upsampling_mode, downsampled_shape, w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='ConvDecoder')[source]

Bases: niftynet.layer.base_layer.TrainableLayer

### Description
This is a generic decoder composed of fully-connected layers followed by {upsampling then transpose convolution} blocks. There is no batch normalisation on the final transpose convolutional layer.
__init__(layer_sizes_decoder, acti_func_decoder, trans_conv_output_channels, trans_conv_kernel_sizes, trans_conv_unpooling_factors, acti_func_trans_conv, upsampling_mode, downsampled_shape, w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='ConvDecoder')[source]
Parameters:
  • layer_sizes_decoder – array, number of output channels for each decoding FC layer
  • acti_func_decoder – array, activation functions for each decoding FC layer
  • trans_conv_output_channels – array, number of output channels for each transpose conv layer
  • trans_conv_kernel_sizes – array, kernel sizes for each transpose conv layer
  • trans_conv_unpooling_factors – array, stride values for upsampling transpose convolutions
  • acti_func_trans_conv – array, activation functions for each transpose conv layer
  • upsampling_mode – string, type of upsampling (Deconvolution, channelwise deconvolution, replicate)
  • downsampled_shape – array, final encoded shape before FC in encoder
  • w_initializer – weight initialisation for network
  • w_regularizer – weight regularisation for network
  • b_initializer – bias initialisation for network
  • b_regularizer – bias regularisation for network
  • name – layer name
layer_op(codes, is_training)[source]
Parameters:
  • codes – tensor, input latent space after gaussian sampling
  • is_training – boolean, True if network is in training mode
Returns:

tensor, output of decoding branch

class FCDecoder(layer_sizes_decoder, acti_func_decoder, w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='FCDecoder')[source]

Bases: niftynet.layer.base_layer.TrainableLayer

### Description
This is a generic fully-connected decoder.
__init__(layer_sizes_decoder, acti_func_decoder, w_initializer=None, w_regularizer=None, b_initializer=None, b_regularizer=None, name='FCDecoder')[source]
Parameters:
  • layer_sizes_decoder – array, number of output channels for each decoding FC layer
  • acti_func_decoder – array, activation functions for each decoding FC layer
  • w_initializer – weight initialisation for network
  • w_regularizer – weight regularisation for network
  • b_initializer – bias initialisation for network
  • b_regularizer – bias regularisation for network
  • name – layer name
layer_op(codes, is_training)[source]
Parameters:
  • codes – tensor, input latent codes
  • is_training – boolean, True if network is in training mode
Returns:

tensor, output of series of FC layers