提交 1d7cb530 authored 作者: Frederic Bastien's avatar Frederic Bastien

check the type of the inputs into the grad of maximum and mininum op.

上级 439e2eaf
......@@ -735,7 +735,12 @@ class Maximum(BinaryScalarOp):
return "%(z)s = ((%(y)s)>(%(x)s)? (%(y)s):(%(x)s));" %locals()
def grad(self, (x, y), (gz, )):
return (eq(maximum(x,y), x)*gz,eq(maximum(x,y), y)*gz)
gx, gy = None, None
if x.type in grad_types:
gx = eq(maximum(x,y), x)*gz
if y.type in grad_types:
gy = eq(maximum(x,y), y)*gz
return (gx,gy)
maximum = Maximum(upcast_out, name = 'maximum')
......@@ -748,7 +753,12 @@ class Minimum(BinaryScalarOp):
return "%(z)s = ((%(y)s)<(%(x)s)? (%(y)s):(%(x)s));" %locals()
def grad(self, (x, y), (gz, )):
return (eq(minimum(x,y), x)*gz,eq(minimum(x,y), y)*gz)
gx, gy = None, None
if x.type in grad_types:
gx = eq(minimum(x,y), x)*gz
if y.type in grad_types:
gy = eq(minimum(x,y), y)*gz
return (gx,gy)
minimum = Minimum(upcast_out, name = 'minimum')
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论