Esempio n. 1
0
 def forward(self, features_mean, features_variance):
     features_stddev = torch.sqrt(features_variance)
     div = features_mean / features_stddev
     pdf = normpdf(div)
     cdf = normcdf(div)
     outputs_mean = features_mean * cdf + features_stddev * pdf
     outputs_variance = (features_mean ** 2 + features_variance) * cdf \
                        + features_mean * features_stddev * pdf - outputs_mean ** 2
     if self._keep_variance_fn is not None:
         outputs_variance = self._keep_variance_fn(outputs_variance)
     return outputs_mean, outputs_variance
Esempio n. 2
0
 def _max_pool_internal(self, mu_a, mu_b, var_a, var_b):
     stddev = torch.sqrt(var_a + var_b)
     ab = mu_a - mu_b
     alpha = ab / stddev
     pdf = normpdf(alpha)
     cdf = normcdf(alpha)
     z_mu = stddev * pdf + ab * cdf + mu_b
     z_var = ((mu_a + mu_b) * stddev * pdf + (mu_a**2 + var_a) * cdf +
              (mu_b**2 + var_b) * (1.0 - cdf) - z_mu**2)
     if self._keep_variance_fn is not None:
         z_var = self._keep_variance_fn(z_var)
     return z_mu, z_var
Esempio n. 3
0
 def forward(self, features_mean, features_variance):
     features_stddev = torch.sqrt(features_variance)
     div = features_mean / features_stddev
     pdf = normpdf(div)
     cdf = normcdf(div)
     negative_cdf = 1.0 - cdf
     mu_cdf = features_mean * cdf
     stddev_pdf = features_stddev * pdf
     squared_mean_variance = features_mean**2 + features_variance
     mean_stddev_pdf = features_mean * stddev_pdf
     mean_r = mu_cdf + stddev_pdf
     variance_r = squared_mean_variance * cdf + mean_stddev_pdf - mean_r**2
     mean_n = -features_mean * negative_cdf + stddev_pdf
     variance_n = squared_mean_variance * negative_cdf - mean_stddev_pdf - mean_n**2
     covxy = -mean_r * mean_n
     outputs_mean = mean_r - self._negative_slope * mean_n
     outputs_variance = variance_r \
                        + self._negative_slope * self._negative_slope * variance_n \
                        - 2.0 * self._negative_slope * covxy
     if self._keep_variance_fn is not None:
         outputs_variance = self._keep_variance_fn(outputs_variance)
     return outputs_mean, outputs_variance