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()