提交 b95bea68 authored 作者: Nicolas Bouchard's avatar Nicolas Bouchard

Fix cast

上级 455ce72d
...@@ -2050,14 +2050,14 @@ class Deg2Rad(UnaryScalarOp): ...@@ -2050,14 +2050,14 @@ class Deg2Rad(UnaryScalarOp):
if gz.type in complex_types: if gz.type in complex_types:
raise NotImplementedError() raise NotImplementedError()
if x.type in float_types: if x.type in float_types:
return gz * numpy.pi / 180, return gz * numpy.asarray(numpy.pi / 180, gz.type),
else: else:
return None, return None,
def c_code(self, node, name, (x,), (z,), sub): def c_code(self, node, name, (x,), (z,), sub):
if node.inputs[0].type in complex_types: if node.inputs[0].type in complex_types:
raise NotImplementedError('type not supported', type) raise NotImplementedError('type not supported', type)
return "%(z)s = %(x)s * M_PI / 180.0;" % locals() return "%(z)s = %(x)s * (M_PI / 180.0);" % locals()
deg2rad = Deg2Rad(upgrade_to_float, name='deg2rad') deg2rad = Deg2Rad(upgrade_to_float, name='deg2rad')
...@@ -2069,14 +2069,14 @@ class Rad2Deg(UnaryScalarOp): ...@@ -2069,14 +2069,14 @@ class Rad2Deg(UnaryScalarOp):
if gz.type in complex_types: if gz.type in complex_types:
raise NotImplementedError() raise NotImplementedError()
if x.type in float_types: if x.type in float_types:
return gz * 180. / numpy.pi, return gz * numpy.asarray(180. / numpy.pi, gz.type),
else: else:
return None, return None,
def c_code(self, node, name, (x,), (z,), sub): def c_code(self, node, name, (x,), (z,), sub):
if node.inputs[0].type in complex_types: if node.inputs[0].type in complex_types:
raise NotImplementedError('type not supported', type) raise NotImplementedError('type not supported', type)
return "%(z)s = %(x)s * 180.0 / M_PI;" % locals() return "%(z)s = %(x)s * (180.0 / M_PI);" % locals()
rad2deg = Rad2Deg(upgrade_to_float, name='rad2deg') rad2deg = Rad2Deg(upgrade_to_float, name='rad2deg')
......
...@@ -2580,7 +2580,7 @@ def exp2(a): ...@@ -2580,7 +2580,7 @@ def exp2(a):
@_scal_elemwise_with_nfunc('expm1', 1, 1) @_scal_elemwise_with_nfunc('expm1', 1, 1)
def expm1(a): def expm1(a):
"""e^`a - 1`""" """e^`a` - 1"""
@_scal_elemwise_with_nfunc('negative', 1, 1) @_scal_elemwise_with_nfunc('negative', 1, 1)
......
...@@ -1057,29 +1057,38 @@ _good_broadcast_unary_wide = dict( ...@@ -1057,29 +1057,38 @@ _good_broadcast_unary_wide = dict(
empty=(numpy.asarray([]),),) empty=(numpy.asarray([]),),)
_grad_broadcast_unary_wide = dict(normal=(rand_ranged(-1000, 1000, (2, 3)),),) _grad_broadcast_unary_wide = dict(normal=(rand_ranged(-1000, 1000, (2, 3)),),)
if theano.config.floatX == 'float32':
angle_eps = 1e-4
else:
angle_eps = 1e-10
Deg2RadTester = makeBroadcastTester( Deg2RadTester = makeBroadcastTester(
op=tensor.deg2rad, op=tensor.deg2rad,
expected=numpy.deg2rad, expected=numpy.deg2rad,
good=_good_broadcast_unary_normal_no_complex, good=_good_broadcast_unary_normal_no_complex,
grad=_grad_broadcast_unary_normal_no_complex) grad=_grad_broadcast_unary_normal_no_complex,
eps=angle_eps)
Deg2RadInplaceTester = makeBroadcastTester( Deg2RadInplaceTester = makeBroadcastTester(
op=inplace.deg2rad_inplace, op=inplace.deg2rad_inplace,
expected=numpy.deg2rad, expected=numpy.deg2rad,
good=_good_broadcast_unary_normal_no_complex, good=_good_broadcast_unary_normal_no_complex,
grad=_grad_broadcast_unary_normal_no_complex, grad=_grad_broadcast_unary_normal_no_complex,
inplace=True) inplace=True,
eps=angle_eps)
Rad2DegTester = makeBroadcastTester( Rad2DegTester = makeBroadcastTester(
op=tensor.rad2deg, op=tensor.rad2deg,
expected=numpy.rad2deg, expected=numpy.rad2deg,
good=_good_broadcast_unary_normal_no_complex, good=_good_broadcast_unary_normal_no_complex,
grad=_grad_broadcast_unary_normal_no_complex) grad=_grad_broadcast_unary_normal_no_complex,
eps=angle_eps)
Rad2DegInplaceTester = makeBroadcastTester( Rad2DegInplaceTester = makeBroadcastTester(
op=inplace.rad2deg_inplace, op=inplace.rad2deg_inplace,
expected=numpy.rad2deg, expected=numpy.rad2deg,
good=_good_broadcast_unary_normal_no_complex, good=_good_broadcast_unary_normal_no_complex,
grad=_grad_broadcast_unary_normal_no_complex, grad=_grad_broadcast_unary_normal_no_complex,
inplace=True) inplace=True,
eps=angle_eps)
SinTester = makeBroadcastTester(op=tensor.sin, SinTester = makeBroadcastTester(op=tensor.sin,
expected=numpy.sin, expected=numpy.sin,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论