Clase Tensorflow.js tf.train.Optimizer

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 clase tf.train.Optimizer() se usa para extender la clase Serializable.

Esta clase tf.train.Optimizer() contiene tres funciones integradas que se ilustran a continuación.

  • tf.train.Optimizer() clase .minimize() función
  • función tf.train.Optimizer()class .computeGradients ( )
  • tf.train.Optimizer() clase .applyGradients() función

La función tf.train.Optimizer() class .minimize() se usa para ejecutar la función dada f() y minimizar la salida escalar de f() calculando los gradientes de y con respecto a la lista dada de variables entrenables indicadas por listavar . Además, si no se proporciona una lista, calcula gradientes con respecto a todas las variables entrenables.

Ejemplo 1:

Javascript

// Importing tensorflow
import tensorflow as tf
 
const xs = tf.tensor1d([0, 1, 2]);
const ys = tf.tensor1d([1.3, 2.5, 3.7]);
 
const x = tf.scalar(Math.random()).variable();
const y = tf.scalar(Math.random()).variable();
 
// Define a function f(x, y) = x + y.
const f = x => x.add(y);
const loss = (pred, label) =>
    pred.sub(label).square().mean();
 
  const learningRate = 0.05;
 
  // Create adagrad optimizer
  const optimizer =
  tf.train.adagrad(learningRate);
 
  // Train the model.
  for (let i = 0; i < 5; i++) {
  optimizer.minimize(() => loss(f(xs), ys));
  }
 
  // Make predictions.
  console.log(
  `x: ${x.dataSync()}, y: ${y.dataSync()}`);
  const preds = f(xs).dataSync();
  preds.forEach((pred, i) => {
  console.log(`x: ${i}, pred: ${pred}`);
  });

Producción:

x: 0.9395854473114014, y: 1.0498266220092773
x: 0, pred: 1.0498266220092773
x: 1, pred: 2.0498266220092773
x: 2, pred: 3.0498266220092773

Ejemplo 2: La función tf.train.Optimizer() class .computeGradients() se usa para ejecutar f() y calcular el gradiente de la salida escalar de f() con respecto a la lista de variables entrenables proporcionada por varList. Además, si no se proporciona una lista, por defecto utiliza todas las variables entrenables.

Javascript

// Importing tensorflow
import * as tf from "@tensorflow/tfjs"
      
const xs = tf.tensor1d([3, 4, 5]);
const ys = tf.tensor1d([3.5, 4.7, 5.3]);
      
const x = tf.scalar(Math.random()).variable();
const y = tf.scalar(Math.random()).variable();
      
// Define a function f(x, y) = ( x^2 ) - y.
const f = x => (x.square()).sub(y);
const loss = (pred, label) =>
    pred.sub(label).square().mean();
      
const learningRate = 0.05;
      
// Create adam optimizer
const optimizer =
tf.train.adam(learningRate);
      
// Train the model.
for (let i = 0; i < 6; i++) {
optimizer.computeGradients(() => loss(f(xs), ys));
}
      
// Make predictions.
console.log(
`x: ${x.dataSync()}, y: ${y.dataSync()}`);
const preds = f(xs).dataSync();
preds.forEach((pred, i) => {
console.log(`x: ${i}, pred: ${pred}`);
});

Producción:

x: 0.38272422552108765, y: 0.7651948928833008
x: 0, pred: 8.2348051071167
x: 1, pred: 15.2348051071167
x: 2, pred: 24.234806060791016

Ejemplo 3: La función tf.train.Optimizer() clase .applyGradients() se usa para actualizar variables usando los gradientes calculados.

Javascript

// Importing tensorflow
 import * as tf from "@tensorflow/tfjs"
 
 const xs = tf.tensor1d([0, 1, 2]);
 const ys = tf.tensor1d([1.58, 2.24, 3.41]);
 
 const x = tf.scalar(Math.random()).variable();
 const y = tf.scalar(Math.random()).variable();
 
 // Define a function f(x) = x^2 + y.
 const f = x => (x.square()).add(y);
 
 const learningRate = 0.05;
 
 // Create adagrad optimizer
 const optimizer =
 tf.train.rmsprop(learningRate);
 
 // Updating variable
 const varGradients = f(xs).dataSync();
 for (let i = 0; i < 5; i++){
 optimizer.applyGradients(varGradients);
 }
 
 // Make predictions.
 console.log(
 `x: ${x.dataSync()}, y: ${y.dataSync()}`);
 const preds = f(xs).dataSync();
 preds.forEach((pred, i) => {
 console.log(`x: ${i}, pred: ${pred}`);
});

Producción:

x: -0.526353657245636, y: 0.15607579052448273
x: 0, pred: 0.15607579052448273
x: 1, pred: 1.1560758352279663
x: 2, pred: 4.156075954437256

Referencia: https://js.tensorflow.org/api/latest/#class:train.Optimizer

Publicación traducida automáticamente

Artículo escrito por nidhi1352singh 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 *