def testBinaryEntropy(self): p = torch.tensor([0.1, 0.02, 0.99, 0.5, 0.75, 0.8, 0.3, 0.4, 0.0, 1.0]) entropy, entropySum = binaryEntropy(p) self.assertAlmostEqual(entropySum, 5.076676985, places=4) self.assertAlmostEqual(entropySum, entropy.sum(), places=4) self.assertAlmostEqual(entropy[0], 0.468995594, places=4) self.assertAlmostEqual(entropy[1], 0.141440543, places=4) self.assertAlmostEqual(entropy[2], 0.080793136, places=4) self.assertEqual(entropy[8], 0.0) self.assertEqual(entropy[9], 0.0) p = torch.tensor([0.25, 0.25, 0.25, 0.25]) entropy, entropySum = binaryEntropy(p) self.assertAlmostEqual(entropySum, 3.245112498, places=4) self.assertAlmostEqual(entropySum, entropy.sum(), places=4) p = torch.tensor([0.5, 0.5, 0.5, 0.5]) entropy, entropySum = binaryEntropy(p) self.assertAlmostEqual(entropySum, 4.0, places=4) self.assertAlmostEqual(entropySum, entropy.sum(), places=4) self.assertAlmostEqual(entropy[0], 1.0, places=4) self.assertAlmostEqual(entropy[1], 1.0, places=4) self.assertAlmostEqual(entropy[2], 1.0, places=4) self.assertAlmostEqual(entropy[3], 1.0, places=4)
def entropy(self): """ Returns the current total entropy of this layer """ if self.k < self.n: _, entropy = binaryEntropy(self.dutyCycle) return entropy else: return 0
def entropy(self): """ Returns the current total entropy of this layer """ if self.k < self.outputLength: _, entropy = binaryEntropy(self.dutyCycle) return entropy * self.maxpoolWidth * self.maxpoolWidth else: return 0