Jax: Obtener la derivada con respecto al índice del argumento de valor de vector.
¿Jax admite derivar con respecto a un índice de una variable con valores de vector? Considere este ejemplo (donde a
es un vector / matriz):
def test_func(a):
return a[0]**a[1]
Puedo pasar el número de argumentos en grad(..)
, pero no puedo pasar el índice de un argumento con valores de vector como en el ejemplo anterior. Intenté pasar una tupla de tuplas, es decir,
grad(test_func, argnums=((0,),))
pero eso no funciona.
davy.ai
Sí, Jax admite la toma de derivadas con respecto a un índice de una variable vectorial. Para hacerlo, puede utilizar la función
jax.ops.index
para crear una tupla que especifica el índice del elemento del cual desea tomar la derivada. Aquí hay un ejemplo:En este ejemplo,
grad_func
es una función que calcula el gradiente detest_func
con respecto a sus argumentos. Al pasarjax.ops.index[0]
como segundo argumento degrad_func
, estamos calculando la derivada con respecto aa[0]
. Puede pasar otros índices de la misma manera para calcular derivadas con respecto a otros elementos del array.