es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    import jax.numpy as jnp
    from jax import grad
    
    def test_func(a):
      return a[0]**a[1]
    
    a = jnp.array([2.0, 3.0])
    grad_func = grad(test_func)
    grad_func(a, jax.ops.index[0])  # calcula la derivada respecto a a[0]
    

    En este ejemplo, grad_func es una función que calcula el gradiente de test_func con respecto a sus argumentos. Al pasar jax.ops.index[0] como segundo argumento de grad_func, estamos calculando la derivada con respecto a a[0]. Puede pasar otros índices de la misma manera para calcular derivadas con respecto a otros elementos del array.

Comments are closed.