HIPS/autograd

support numpy.take

Open

#743 aberto em 24 de nov. de 2025

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)Python (909 forks)batch import
PR welcomegood first issue

Métricas do repositório

Stars
 (6.628 stars)
Métricas de merge de PR
 (Mesclagem média 51d 7h) (16 fundiu PRs em 30d)

Description

Currently tracing the gradient through take is not supported:

import numpy as np
import autograd as ag
import autograd.numpy as anp

rng = np.random.default_rng(42)
x = rng.uniform(size=(3, 4, 5))
idx = rng.integers(0, 4, size=(6,))

def foo(x, idx):
    # # works:
    # return x[:, idx, :].sum()
    # # doesn't work:
    return anp.take(x, idx, axis=1).sum()

gfoo = ag.grad(foo, argnum=0)
gfoo(x, rng.integers(0, 4, size=(6,))).shape
# NotImplementedError: VJP of take wrt argnums (0,) not defined

take is mostly just a convenient syntax/subset of getitem indexing, so I suppose there is nothing fundamentally blocking it.

Guia do colaborador