def __init__(self, num_inputs, num_hidden, num_cond_inputs=None, act='relu', pre_exp_tanh=False): super(MADE, self).__init__() activations = {'relu': nn.ReLU, 'sigmoid': nn.Sigmoid, 'tanh': nn.Tanh} act_func = activations[act] input_mask = get_mask( num_inputs, num_hidden, num_inputs, mask_type='input') hidden_mask = get_mask(num_hidden, num_hidden, num_inputs) output_mask = get_mask( num_hidden, num_inputs * 2, num_inputs, mask_type='output') self.joiner = nn.MaskedLinear(num_inputs, num_hidden, input_mask, num_cond_inputs) self.trunk = nn.Sequential(act_func(), nn.MaskedLinear(num_hidden, num_hidden, hidden_mask), act_func(), nn.MaskedLinear(num_hidden, num_inputs * 2, output_mask))
def __init__(self, num_inputs, num_hidden, use_tanh=True): super(MADE, self).__init__() self.use_tanh = use_tanh input_mask = get_mask( num_inputs, num_hidden, num_inputs, mask_type='input') hidden_mask = get_mask(num_hidden, num_hidden, num_inputs) output_mask = get_mask( num_hidden, num_inputs * 2, num_inputs, mask_type='output') self.main = nn.Sequential( nn.MaskedLinear(num_inputs, num_hidden, input_mask), nn.ReLU(), nn.MaskedLinear(num_hidden, num_hidden, hidden_mask), nn.ReLU(), nn.MaskedLinear(num_hidden, num_inputs * 2, output_mask))
def __init__(self, num_inputs, num_hidden, num_cond_inputs=None, use_tanh=False): super(MADE, self).__init__() self.use_tanh = use_tanh input_mask = get_mask( num_inputs, num_hidden, num_inputs, mask_type='input') hidden_mask = get_mask(num_hidden, num_hidden, num_inputs) output_mask = get_mask( num_hidden, num_inputs * 2, num_inputs, mask_type='output') self.joiner = nn.MaskedLinear(num_inputs, num_hidden, input_mask, num_cond_inputs) self.trunk = nn.Sequential( nn.ReLU(), nn.MaskedLinear(num_hidden, num_hidden, hidden_mask), nn.ReLU(), nn.MaskedLinear(num_hidden, num_inputs * 2, output_mask))
def _make_param_net(self): input_mask = get_mask(self.num_inputs, self.num_hidden, self.num_inputs, mask_type='input') hidden_mask = get_mask(self.num_hidden, self.num_hidden, self.num_inputs) output_mask = get_mask(self.num_hidden, self.num_inputs * 2, self.num_inputs, mask_type='output') return nn.Sequential( nn.MaskedLinear(self.num_inputs, self.num_hidden, input_mask), nn.ReLU(), nn.MaskedLinear(self.num_hidden, self.num_hidden, hidden_mask), nn.ReLU(), nn.MaskedLinear(self.num_hidden, self.num_inputs * 2, output_mask))
def __init__(self, num_inputs, num_hidden, num_cond_inputs=None, s_act='tanh', t_act='relu', pre_exp_tanh=False): super(MADESplit, self).__init__() self.pre_exp_tanh = pre_exp_tanh activations = {'relu': nn.ReLU, 'sigmoid': nn.Sigmoid, 'tanh': nn.Tanh} input_mask = get_mask(num_inputs, num_hidden, num_inputs, mask_type='input') hidden_mask = get_mask(num_hidden, num_hidden, num_inputs) output_mask = get_mask(num_hidden, num_inputs, num_inputs, mask_type='output') act_func = activations[s_act] self.s_joiner = nn.MaskedLinear(num_inputs, num_hidden, input_mask, num_cond_inputs) self.s_trunk = nn.Sequential(act_func(), nn.MaskedLinear(num_hidden, num_hidden, hidden_mask), act_func(), nn.MaskedLinear(num_hidden, num_inputs, output_mask)) act_func = activations[t_act] self.t_joiner = nn.MaskedLinear(num_inputs, num_hidden, input_mask, num_cond_inputs) self.t_trunk = nn.Sequential(act_func(), nn.MaskedLinear(num_hidden, num_hidden, hidden_mask), act_func(), nn.MaskedLinear(num_hidden, num_inputs, output_mask))