def filterbank_matrices(self, a, mu_x, sigma2, epsilon=1e-9): t_a, t_mu_x = align(a, mu_x) temp = t_a - t_mu_x temp, t_sigma = align(temp, sigma2) temp = temp / (t_sigma * 2) F = torch.exp(-torch.pow(temp, 2)) F = F / (F.sum(2, True).expand_as(F) + epsilon) return F
def mean_channels(F): assert (F.dim() == 4) spatial_sum = F.sum(3, keepdim=True).sum(2, keepdim=True) return spatial_sum / (F.size(2) * F.size(3))
def kldiv2(p, q): kl = F.sum(F.softmax(p) * (F.log_softmax(p) - F.log(q))) / p.shape[0] return kl
def kl_divergence(y, t): entropy = -F.sum(t[t.data.nonzero()] * F.log(t[t.data.nonzero()])) crossEntropy = -F.sum(t * F.log_softmax(y)) return (crossEntropy - entropy) / y.shape[0]
def ent(p): h = -F.sum(F.softmax(p) * F.log_softmax(p)) / p.shape[0] return h