Esempio n. 1
0
    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))
Esempio n. 2
0
    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))
Esempio n. 3
0
    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))
Esempio n. 4
0
    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))
Esempio n. 5
0
    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))