def _backward_one(x, g):
if g is None:
xp = cuda.get_array_module(x)
return xp.zeros_like(x)
if g.ndim != x.ndim:
g = g.sum(axis=tuple(range(g.ndim - x.ndim)))
# An input variable is always an array, not a scalar.
# We need to convert a scalar value to a zero-dim array.
xp = cuda.get_array_module(x)
if xp.isscalar(g):
g = xp.array(g)
axis = tuple(i for i, sx in enumerate(x.shape) if sx == 1)
if len(axis) > 0:
return g.sum(keepdims=True, axis=axis)
else:
return g
评论列表
文章目录