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"]
eps=1e-8, inplace=True, ) class TestSigmoid: def setup_method(self): utt.seed_rng() def test_elemwise(self): utt.verify_grad(aet.sigmoid, [np.random.rand(3, 4)]) _good_broadcast_unary_softplus = dict( copymod( _good_broadcast_unary_normal_no_complex, without=["uint8", "uint16", "big_scalar"], ), # numpy function overflows with uint16. uint8=[np.arange(0, 89, dtype="uint8") ], # the range is different in new added uint8. int8=[np.arange(-127, 89, dtype="int8")], ) expected_sofplus = upcast_int8_nfunc( lambda inputs: check_floatX(inputs, np.log1p(np.exp(inputs)))) TestSoftplusBroadcast = makeBroadcastTester( op=aet.softplus, expected=expected_sofplus, good=_good_broadcast_unary_softplus, eps=1e-8, )
TestMulInplaceBroadcast = makeBroadcastTester( op=mul_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, ) TestTrueDivInplaceBroadcast = makeBroadcastTester( op=true_div_inplace, expected=_numpy_true_div, good=copymod( _good_broadcast_div_mod_normal_float_inplace, # The output is now in float, we cannot work inplace on an int. without=["integer", "uint8", "uint16", "int8"], ), grad_rtol=div_grad_rtol, inplace=True, ) TestInvInplaceBroadcast = makeBroadcastTester( op=inv_inplace, expected=lambda x: _numpy_true_div(np.int8(1), x), good=_good_inv_inplace, bad_runtime=_bad_runtime_inv, grad_rtol=div_grad_rtol, inplace=True, )
from aesara.tensor.math import clip, sigmoid 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