def __call__(self, x, y=None):
     self.qw1 = nn.random.Gaussian(self.w1_m,
                                   nn.softplus(self.w1_s),
                                   p=nn.random.Gaussian(0, 1))
     self.qb1 = nn.random.Gaussian(self.b1_m,
                                   nn.softplus(self.b1_s),
                                   p=nn.random.Gaussian(0, 1))
     self.qw2 = nn.random.Gaussian(self.w2_m,
                                   nn.softplus(self.w2_s),
                                   p=nn.random.Gaussian(0, 1))
     self.qb2 = nn.random.Gaussian(self.b2_m,
                                   nn.softplus(self.b2_s),
                                   p=nn.random.Gaussian(0, 1))
     self.qw3 = nn.random.Gaussian(self.w3_m,
                                   nn.softplus(self.w3_s),
                                   p=nn.random.Gaussian(0, 1))
     self.qb3 = nn.random.Gaussian(self.b3_m,
                                   nn.softplus(self.b3_s),
                                   p=nn.random.Gaussian(0, 1))
     h = nn.tanh(x @ self.qw1.draw() + self.qb1.draw())
     h = nn.tanh(h @ self.qw2.draw() + self.qb2.draw())
     self.py = nn.random.Bernoulli(logit=h @ self.qw3.draw() +
                                   self.qb3.draw(),
                                   data=y)
     return self.py.mu.value
Exemplo n.º 2
0
 def forward(self, x):
     h = x
     for i in range(self.n_unit - 1):
         h = nn.tanh(
             np.matmul(
                 h, self.parameter["w_encode{vari}".format(vari=i)] +
                 self.parameter["b_encode{vari}".format(vari=i)]))
     for i in range(self.n_unit - 2, 0, -1):
         h = nn.tanh(
             np.matmul(
                 h, self.parameter["w_decode{vari}".format(vari=i)] +
                 self.parameter["b_decode{vari}".format(vari=i)]))
     x_ = np.matmul(
         h, self.parameter["w_decode0"] + self.parameter["b_decode0"])
     self.px = nn.random.Gaussian(x_, 1., data=x)
 def __call__(self, x, y=None):
     h = nn.tanh(x @ self.w1 + self.b1)
     coef = nn.softmax(h @ self.w2_c + self.b2_c)
     mean = h @ self.w2_m + self.b2_m
     std = nn.exp(h @ self.w2_s + self.b2_s)
     self.py = nn.random.GaussianMixture(coef, mean, std, data=y)
     return self.py
Exemplo n.º 4
0
 def transform(self, x):
     h = x
     for i in range(self.n_unit - 1):
         h = nn.tanh(
             np.matmul(
                 h, self.parameter["w_encode{vari}".format(vari=i)] +
                 self.parameter["b_encode{vari}".format(vari=i)]))
     return h.value
 def __call__(self, x, y=None):
     self.pw1 = nn.random.Gaussian(0., 1., data=self.w1)
     self.pb1 = nn.random.Gaussian(0., 1., data=self.b1)
     self.pw2 = nn.random.Gaussian(0., 1., data=self.w2)
     self.pb2 = nn.random.Gaussian(0., 1., data=self.b2)
     h = nn.tanh(x @ self.w1 + self.b1)
     self.py = nn.random.Gaussian(h @ self.w2 + self.b2, std=0.1, data=y)
     return self.py.mu.value
 def __call__(self, x, y=None):
     h = nn.tanh(x @ self.w1 + self.b1)
     self.py = nn.random.Bernoulli(logit=h @ self.w2 + self.b2, data=y)
     return self.py.mu.value
 def __call__(self, x, y=None):
     h = nn.tanh(x @ self.w1 + self.b1)
     self.py = nn.random.Gaussian(h @ self.w2 + self.b2, std=1.,
                                  data=y)  # 这里最后一步不是用激活函数,而是用高斯分布,什么作用
     return self.py.mu.value
Exemplo n.º 8
0
 def test_tanh(self):
     self.assertEqual(nn.tanh(0).value, 0)
Exemplo n.º 9
0
 def test_tanh(self):
     self.assertEqual(nn.tanh(0).value, 0)