Función Tensorflow.js tf.customGrad()

Tensorflow.js es una biblioteca de código abierto desarrollada por Google para ejecutar modelos de aprendizaje automático y redes neuronales de aprendizaje profundo en el entorno del navegador o del Node.

La función tf.customGrad() se utiliza para devolver el gradiente de una función personalizada específica «f». Aquí la función personalizada da {valor: Tensor, gradFunc: (dy, guardado) → Tensor[]}, donde gradFunc da los gradientes personalizados de la función de entrada f con respecto a sus entradas.

Sintaxis:

tf.customGrad(f)

Parámetros: Esta función acepta un parámetro que se ilustra a continuación:

  • f: Es la función personalizada especificada.

Valor devuelto: esta función devuelve el gradiente de una función personalizada específica «f»

Ejemplo 1:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
 
// Initializing a custom function f
const f = (a, save) => {
   
   // Saving a for its availability later for the gradient
   save([a]);
   
   // Overriding gradient of a^2
   return {
     value: a.square(),
      
     // Here "saved.a" pointing to "a" which
     // have been saved above
     gradFunc: (dy, saved) => [dy.mul(saved[0].abs())]
   };
}
 
// Calling the .customGrad() function
// over the above specified custom function f
const customOp = tf.customGrad(f);
 
// Initializing a 1D Tensor of some values
const a = tf.tensor1d([0, -1, 1, 2]);
 
// Getting the gradient of above function
// f for the above specified Tensor values
const da = tf.grad(a => customOp(a));
 
// Printing the custom function "f" for the
// above specified Tensor "a"
console.log(`f(a):`);
customOp(a).print();
 
// Printing the gradient of the function "f" for the
// above specified Tensor "a"
console.log(`f'(a):`);
da(a).print();

Producción:

f(a):
Tensor
   [0, 1, 1, 4]
f'(a):
Tensor
   [0, 1, 1, 2]

Ejemplo 2:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
 
// Calling the .customGrad() function
// with the custom function "f" as
// it's parameter
const customOp = tf.customGrad(
   
// Initializing a custom function f
(a, save) => {
   
   // Saving a for its availability later for the gradient
   save([a]);
   
   // Overriding gradient of a^3
   return {
     value: a.pow(tf.scalar(3, 'int32')),
      
     // Here "saved.a" pointing to "a" which
     // have been saved above
     gradFunc: (dy, saved) => [dy.mul(saved[0].abs())]
   };
}
);
 
// Initializing a 1D Tensor of some values
const a = tf.tensor1d([0, -1, 2, -2, 0.3]);
 
// Getting the gradient of above function
// f for the above specified Tensor values
const da = tf.grad(a => customOp(a));
 
// Printing the custom function "f" for the
// above specified Tensor "a"
console.log(`f(a):`);
customOp(a).print();
 
// Printing the gradient of the function "f" for the
// above specified Tensor "a"
console.log(`f'(a):`);
da(a).print();

Producción:

f(a):
Tensor
   [0, -1, 8, -8, 0.027]
f'(a):
Tensor
   [0, 1, 2, 2, 0.3]

Referencia: https://js.tensorflow.org/api/latest/#customGrad
 

Publicación traducida automáticamente

Artículo escrito por Kanchan_Ray y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *