def __init__()

in qlearn/commun/mnf_layer.py [0:0]


    def __init__(self, in_features, out_features, hidden_dim, n_hidden, n_flows_q, n_flows_r,
                 prior_var=1.0, threshold_var=0.5):
        nn.Module.__init__(self)
        self.in_features = in_features
        self.out_features = out_features
        self.hidden_dim = hidden_dim
        self.n_hidden = n_hidden
        self.n_flows_q = n_flows_q
        self.n_flows_r = n_flows_r
        self.prior_var = prior_var
        self.threshold_var = threshold_var

        self.weight_mu = nn.Parameter(torch.Tensor(out_features, in_features))
        self.weight_logstd = nn.Parameter(torch.Tensor(out_features, in_features))
        self.bias_mu = nn.Parameter(torch.Tensor(out_features))
        self.bias_logvar = nn.Parameter(torch.Tensor(out_features))

        self.qzero_mu = nn.Parameter(torch.Tensor(in_features))
        self.qzero_logvar = nn.Parameter(torch.Tensor(in_features))
        # auxiliary variable c, b1 and b2 are defined in equation (9) and (10)
        self.rzero_c = nn.Parameter(torch.Tensor(in_features))
        self.rzero_b1 = nn.Parameter(torch.Tensor(in_features))
        self.rzero_b2 = nn.Parameter(torch.Tensor(in_features))

        self.flow_q = MaskedNVPFlow(in_features, hidden_dim, n_hidden, n_flows_q)
        self.flow_r = MaskedNVPFlow(in_features, hidden_dim, n_hidden, n_flows_r)

        self.register_buffer('epsilon_z', torch.Tensor(in_features))
        self.register_buffer('epsilon_weight', torch.Tensor(out_features, in_features))
        self.register_buffer('epsilon_bias', torch.Tensor(out_features))
        self.reset_parameters()
        self.reset_noise()