INNER CODE UNIT · Python
def_linear
HIPS/autograd · autograd/core.py:177
def def_linear(fun):
"""Flags that a function is linear wrt all args"""
defjvp_argnum(fun, lambda argnum, g, ans, args, kwargs: fun(*subval(args, argnum, g), **kwargs))
# -------------------- vector behavior --------------------
def add_outgrads(prev_g_flagged, g):
sparse = type(g) in sparse_object_types
if prev_g_flagged:
vs = vspace(g)
prev_g, mutable = prev_g_flagged
if mutable:
if sparse:
return sparse_add(vs, prev_g, g), True
else:
return vs.mut_add(prev_g, g), True