def test_binary_crossentropy_reshape(): # Reported as https://github.com/Theano/Theano/issues/4086 a = tensor4("a") for c in ( binary_crossentropy(sigmoid(a.reshape((-1, 1))), 1).sum(), binary_crossentropy(sigmoid(a).reshape((-1, 1)), 1).sum(), ): ga = aesara.grad(c, a) # This only works when "specialize" options are included mode = aesara.compile.get_default_mode().including("fast_run") fga = aesara.function([a], ga, mode=mode) utt.assert_allclose( fga(np.array([[[[30.0]]]], dtype=config.floatX)), np.zeros((1, 1, 1, 1), dtype=config.floatX), )
def test_matches_binary_crossentropy(self): # Test sigmoid_binary_crossentropy(p, t) == # binary_crossentropy(sigmoid(p), t). pred, target = inputs = vectors("pt") reference_val = binary_crossentropy(sigmoid(pred), target) f_reference = aesara.function(inputs, reference_val) test_val = sigmoid_binary_crossentropy(pred, target) f_test = aesara.function(inputs, test_val) test_inputs = self._get_test_inputs() utt.assert_allclose(f_reference(*test_inputs), f_test(*test_inputs))
def test_matches_binary_crossentropy(self): # Test sigmoid_binary_crossentropy(p, t) == # binary_crossentropy(sigmoid(p), t). pred, target = inputs = vectors("pt") reference_val = binary_crossentropy(sigmoid(pred), target) f_reference = aesara.function(inputs, reference_val) test_val = sigmoid_binary_crossentropy(pred, target) f_test = aesara.function(inputs, test_val) rng = np.random.default_rng(utt.fetch_seed()) pred, target = rng.standard_normal((2, 50)).astype(config.floatX) test_inputs = [pred, 1 / (1 + np.exp(-target))] utt.assert_allclose(f_reference(*test_inputs), f_test(*test_inputs))