Ejemplo n.º 1
0
    def __init__(self,
                 dim,
                 hid_dim,
                 context_dim,
                 num_layers,
                 activation=nn.ELU(),
                 fixed_order=False,
                 num_ds_dim=4,
                 num_ds_layers=1,
                 num_ds_multiplier=3):
        super(IAF_DSF, self).__init__()

        self.dim = dim
        self.context_dim = context_dim
        self.num_ds_dim = num_ds_dim
        self.num_ds_layers = num_ds_layers

        if type(dim) is int:
            self.mdl = iaf_modules.cMADE(
                dim, hid_dim, context_dim, num_layers,
                num_ds_multiplier * (hid_dim // dim) * num_ds_layers,
                activation, fixed_order)
            self.out_to_dsparams = nn.Conv1d(
                num_ds_multiplier * (hid_dim // dim) * num_ds_layers,
                3 * num_ds_layers * num_ds_dim, 1)
            self.reset_parameters()

        self.sf = SigmoidFlow(num_ds_dim)
Ejemplo n.º 2
0
 def __init__(self, dim, hid_dim, context_dim, num_layers,
              activation=nn.ELU(), realify=nn_.sigmoid, fixed_order=False):
     super(IAF, self).__init__()
     self.realify = realify
     
     self.dim = dim
     self.context_dim = context_dim
     
     if type(dim) is int:
         self.mdl = iaf_modules.cMADE(
                 dim, hid_dim, context_dim, num_layers, 2, 
                 activation, fixed_order)
         self.reset_parameters()
Ejemplo n.º 3
0
    def __init__(self,
                 dim,
                 hid_dim,
                 context_dim,
                 num_layers,
                 activation=nn.ELU(),
                 fixed_order=False,
                 num_ds_dim=4,
                 num_ds_layers=1,
                 num_ds_multiplier=3):
        super(IAF_DDSF, self).__init__()

        self.dim = dim
        self.context_dim = context_dim
        self.num_ds_dim = num_ds_dim
        self.num_ds_layers = num_ds_layers

        if type(dim) is int:
            self.mdl = iaf_modules.cMADE(
                dim, hid_dim, context_dim, num_layers,
                num_ds_multiplier * (hid_dim / dim) * num_ds_layers,
                activation, fixed_order)

        num_dsparams = 0
        for i in range(num_ds_layers):
            if i == 0:
                in_dim = 1
            else:
                in_dim = num_ds_dim
            if i == num_ds_layers - 1:
                out_dim = 1
            else:
                out_dim = num_ds_dim

            u_dim = in_dim
            w_dim = num_ds_dim
            a_dim = b_dim = num_ds_dim
            num_dsparams += u_dim + w_dim + a_dim + b_dim

            self.add_module('sf{}'.format(i),
                            DenseSigmoidFlow(in_dim, num_ds_dim, out_dim))
        if type(dim) is int:
            self.out_to_dsparams = nn.Conv1d(
                num_ds_multiplier * (hid_dim / dim) * num_ds_layers,
                num_dsparams, 1)
        else:
            self.out_to_dsparams = nn.Conv1d(
                num_ds_multiplier * (hid_dim / dim[0]) * num_ds_layers,
                num_dsparams, 1)

        self.reset_parameters()
Ejemplo n.º 4
0
    def __init__(self,
                 dim,
                 hid_dim,
                 context_dim,
                 num_layers,
                 activation=nn.ELU(),
                 fixed_order=True):
        super(IAF_VP, self).__init__()

        self.dim = dim
        self.context_dim = context_dim

        if type(dim) is int:
            self.mdl = iaf_modules.cMADE(dim, hid_dim, context_dim, num_layers,
                                         1, activation, fixed_order)
            self.reset_parameters()