提交 8477307a authored 作者: Frédéric Bastien's avatar Frédéric Bastien

Merge pull request #1876 from jlowin/disconnected_inputs

Fix: disconnected_inputs arg not getting passed from jacobian to grad
......@@ -1666,7 +1666,11 @@ def jacobian(expression, wrt, consider_constant=None,
if expression.ndim == 0:
# expression is just a scalar, use grad
return format_as(using_list, using_tuple, grad(expression, wrt))
return format_as(using_list, using_tuple,
grad(expression,
wrt,
consider_constant=consider_constant,
disconnected_inputs=disconnected_inputs))
def inner_function(*args):
idx = args[0]
......
......@@ -142,3 +142,25 @@ def test004_hessian():
f = theano.function([x], Hx)
vx = numpy.arange(10).astype(theano.config.floatX)
assert numpy.allclose(f(vx), numpy.eye(10) * 2)
def test_jacobian_disconnected_inputs():
"""
Test that disconnected inputs are properly handled by jacobian.
"""
v1 = tensor.vector()
v2 = tensor.vector()
jacobian_v = theano.gradient.jacobian(1 + v1, v2,
disconnected_inputs='ignore')
func_v = theano.function([v1, v2], jacobian_v)
val = numpy.arange(4.0).astype(theano.config.floatX)
assert numpy.allclose(func_v(val, val), numpy.zeros((4, 4)))
s1 = tensor.scalar()
s2 = tensor.scalar()
jacobian_s = theano.gradient.jacobian(1 + s1, s2,
disconnected_inputs='ignore')
func_s = theano.function([s2], jacobian_s)
val = numpy.array(1.0).astype(theano.config.floatX)
assert numpy.allclose(func_s(val), numpy.zeros(1))
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论