def exhaustive_dropout_average(mlp, inputs, masked_input_layers=None, default_input_scale=2.0, input_scales=None):
 if (masked_input_layers is None):
  masked_input_layers = mlp.layer_names
 mlp._validate_layer_names(masked_input_layers)
 if (input_scales is None):
  input_scales = {}
 mlp._validate_layer_names(input_scales.keys())
 if any(((key not in masked_input_layers) for key in input_scales)):
  not_in = [key for key in input_scales if (key not in mlp.layer_names)]
  raise ValueError((', '.join(not_in) + ' in input_scales but not masked'))
 num_inputs = mlp.get_total_input_dimension(masked_input_layers)
 outputs = [mlp.masked_fprop(inputs, mask, masked_input_layers, default_input_scale, input_scales) for mask in xrange((2 ** num_inputs))]
 return geometric_mean_prediction(outputs)

def exhaustive_dropout_average ( mlp , inputs , masked_input_layers = None , default_input_scale = 2.0 , input_scales = None ) : if ( masked_input_layers is None ) : masked_input_layers = mlp . layer_names mlp . _validate_layer_names ( masked_input_layers ) if ( input_scales is None ) : input_scales = { } mlp . _validate_layer_names ( input_scales . keys ( ) ) if any ( ( ( key not in masked_input_layers ) for key in input_scales ) ) : not_in = [ key for key in input_scales if ( key not in mlp . layer_names ) ] raise ValueError ( ( ', ' . join ( not_in ) + ' in input_scales but not masked' ) ) num_inputs = mlp . get_total_input_dimension ( masked_input_layers ) outputs = [ mlp . masked_fprop ( inputs , mask , masked_input_layers , default_input_scale , input_scales ) for mask in xrange ( ( 2 ** num_inputs ) ) ] return geometric_mean_prediction ( outputs )
take the geometric mean over all dropout masks of an mlp with softmax outputs .