): 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), ) TestSoftsign = makeBroadcastTester( op=softsign, expected=upcast_int8_nfunc( lambda inputs: check_floatX(inputs, inputs / (1.0 + np.fabs(inputs)))), good=_good_broadcast_unary_normal_float_no_complex, name="SoftsignTester", ) class TestSigmoidBinaryCrossentropy: def _get_test_inputs(self, n=50): pred, target = np.random.randn(2, n).astype(config.floatX) # apply sigmoid to target, but not pred return [pred, 1 / (1 + np.exp(-target))] def test_matches_binary_crossentropy(self): # Test sigmoid_binary_crossentropy(p, t) == # binary_crossentropy(sigmoid(p), t).
class TestSigmoid: def setup_method(self): utt.seed_rng() def test_elemwise(self): utt.verify_grad(sigmoid, [np.random.rand(3, 4)]) TestSigmoidBroadcast = makeBroadcastTester( op=sigmoid, expected=upcast_int8_nfunc( lambda inputs: check_floatX(inputs, 1 / (1 + np.exp(-inputs))) ), good=copymod( _good_broadcast_unary_normal_no_complex, without=["uint16"] ), # The reason that 'uint16' is excluted is that # theano works well but numpy overflows resulting # in an assertion error. # grad=_grad_broadcast_unary_normal, name="SigmoidTester", eps=1e-8, ) TestUltraFastSigmoidBroadcast = makeBroadcastTester( op=ultra_fast_sigmoid, expected=upcast_int8_nfunc( lambda inputs: check_floatX(inputs, 1 / (1 + np.exp(-inputs))) ), good=copymod( _good_broadcast_unary_normal_no_complex, without=["uint16"] ), # numpy fucnting overflows with uint16.
expected_gammal = [] expected_j0 = [] expected_j1 = [] expected_jv = [] expected_i0 = [] expected_i1 = [] expected_iv = [] expected_sigmoid = (upcast_int8_nfunc( lambda inputs: check_floatX(inputs, np.log1p(np.exp(inputs)))), ) skip_scipy = "scipy is not present" TestErfBroadcast = makeBroadcastTester( op=aet.erf, expected=expected_erf, good=_good_broadcast_unary_normal, grad=_grad_broadcast_unary_normal, eps=2e-10, mode=mode_no_scipy, skip=skip_scipy, ) TestErfInplaceBroadcast = makeBroadcastTester( op=inplace.erf_inplace, expected=expected_erf, good=_good_broadcast_unary_normal_float, mode=mode_no_scipy, eps=2e-10, inplace=True, skip=skip_scipy, ) TestErfcBroadcast = makeBroadcastTester(
_good_inv_inplace, _numpy_true_div, angle_eps, check_floatX, copymod, div_grad_rtol, ignore_isfinite_mode, inplace_func, makeBroadcastTester, upcast_float16_ufunc, ) TestAddInplaceBroadcast = makeBroadcastTester( op=add_inplace, expected=lambda x, y: x + y, good=_good_broadcast_binary_normal, bad_build=_bad_build_broadcast_binary_normal, bad_runtime=_bad_runtime_broadcast_binary_normal, inplace=True, ) TestSubInplaceBroadcast = makeBroadcastTester( op=sub_inplace, expected=lambda x, y: x - y, good=_good_broadcast_binary_normal, bad_build=_bad_build_broadcast_binary_normal, bad_runtime=_bad_runtime_broadcast_binary_normal, inplace=True, ) TestMaximumInplaceBroadcast = makeBroadcastTester( op=maximum_inplace,
from aesara.tensor.nnet.sigm import hard_sigmoid, ultra_fast_sigmoid from aesara.tensor.type import matrix from tests.tensor.utils import ( _good_broadcast_unary_normal_no_complex, check_floatX, copymod, makeBroadcastTester, upcast_int8_nfunc, ) TestUltraFastSigmoidBroadcast = makeBroadcastTester( op=ultra_fast_sigmoid, expected=upcast_int8_nfunc( lambda inputs: check_floatX(inputs, 1 / (1 + np.exp(-inputs)))), good=copymod(_good_broadcast_unary_normal_no_complex, without=["uint16"]), # numpy fucnting overflows with uint16. # grad=_grad_broadcast_unary_normal, name="UltraFastSigmoidTester", # This is an approx of the sigmoid. That is why we raise eps eps=5e-2, ) TestHardSigmoidBroadcast = makeBroadcastTester( op=hard_sigmoid, expected=upcast_int8_nfunc( lambda inputs: check_floatX(inputs, 1 / (1 + np.exp(-inputs)))), good=copymod(_good_broadcast_unary_normal_no_complex, without=["uint16"]), # numpy fucnting overflows with uint16. # grad=_grad_broadcast_unary_normal, name="HardSigmoidTester", # This is an approx of the sigmoid. That is why we raise eps