提交 5b7edbde authored 作者: Frédéric Bastien's avatar Frédéric Bastien 提交者: GitHub

Merge pull request #5182 from mohammadpz/add_uint_test

uint16 added into _good_broadcast_binary_normal
......@@ -854,6 +854,14 @@ def upgrade_to_float(*types):
for type in types])),
def upgrade_to_float64(*types):
"""
Upgrade any int and float32 to float64 to do as SciPy.
"""
return get_scalar_type('float64'),
def same_out(type):
return type,
......
......@@ -6,6 +6,7 @@ import numpy
import theano
from theano.scalar.basic import (UnaryScalarOp, BinaryScalarOp,
exp, upgrade_to_float,
upgrade_to_float64,
float_types)
from theano.scalar.basic import (upgrade_to_float_no_complex,
complex_types, discrete_types,
......@@ -369,7 +370,7 @@ class Chi2SF(BinaryScalarOp):
return Chi2SF.st_impl(x, k)
else:
super(Chi2SF, self).impl(x, k)
chi2sf = Chi2SF(upgrade_to_float, name='chi2sf')
chi2sf = Chi2SF(upgrade_to_float64, name='chi2sf')
class J1(UnaryScalarOp):
......
......@@ -16,7 +16,7 @@ from theano.tensor.nnet.sigm import (
compute_mul, is_1pexp, parse_mul_tree, perform_sigm_times_exp,
register_local_1msigmoid, simplify_mul,
)
from theano.tensor.tests.test_basic import (makeBroadcastTester,
from theano.tensor.tests.test_basic import (makeBroadcastTester, copymod,
check_floatX, upcast_int8_nfunc,
_good_broadcast_unary_normal_no_complex)
......@@ -28,12 +28,14 @@ class T_sigmoid(unittest.TestCase):
def test_elemwise(self):
utt.verify_grad(sigmoid, [numpy.random.rand(3, 4)])
SigmoidTester = makeBroadcastTester(
op=sigmoid,
expected=upcast_int8_nfunc(lambda inputs: check_floatX(
inputs, 1 / (1 + numpy.exp(-inputs)))),
good=_good_broadcast_unary_normal_no_complex,
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',
)
......@@ -42,7 +44,8 @@ UltraFastSigmoidTester = makeBroadcastTester(
op=ultra_fast_sigmoid,
expected=upcast_int8_nfunc(lambda inputs: check_floatX(
inputs, 1 / (1 + numpy.exp(-inputs)))),
good=_good_broadcast_unary_normal_no_complex,
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
......@@ -52,7 +55,8 @@ HardSigmoidTester = makeBroadcastTester(
op=hard_sigmoid,
expected=upcast_int8_nfunc(lambda inputs: check_floatX(
inputs, 1 / (1 + numpy.exp(-inputs)))),
good=_good_broadcast_unary_normal_no_complex,
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
......@@ -63,7 +67,9 @@ SoftplusTester = makeBroadcastTester(
op=softplus,
expected=upcast_int8_nfunc(lambda inputs: check_floatX(
inputs, numpy.log1p(numpy.exp(inputs)))),
good=dict(_good_broadcast_unary_normal_no_complex,
good=dict(copymod(_good_broadcast_unary_normal_no_complex,
without=['uint8', 'uint16']), # numpy fucnting overflows with uint16.
uint8=[numpy.arange(0, 89, dtype='uint8')], # the range is different in new added uint8.
int8=[numpy.arange(-127, 89, dtype='int8')]),
# grad=_grad_broadcast_unary_normal,
name='SoftplusTester',
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论