Función Tensorflow.js tf.callbacks.earlyStopping()

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. 

Tensorflow.js tf.callbacks.earlyStopping() es una función de devolución de llamada que se usa para detener el entrenamiento cuando los datos de entrenamiento dejan de mejorar. 

Sintaxis:

tf.callbacks.earlyStopping(args);

Parámetros: este método acepta los siguientes parámetros.

  • args: Es un objeto con los siguientes campos:
    • monitor: Debería ser una string. Es el valor que se va a monitorear.
    • minDelta: Debería ser un número. Es el valor mínimo por debajo del cual no se considera una mejora en el entrenamiento.
    • paciencia: Debe ser un número. Es el número de veces que no debe detenerse cuando encuentra un valor inferior a minDelta.
    • detallado: debe ser un número. Es el valor de la verbosidad.
    • modo: Debe ser uno de estos tres:
      • “auto”: en el modo automático, la dirección se deduce automáticamente del nombre de la cantidad monitoreada.
      • “min”: en el modo min, el entrenamiento se detendrá cuando el valor de los datos que se monitorean deje de disminuir.
      • “max”: en el modo max, el entrenamiento se detendrá cuando el valor de los datos que se monitorean deje de aumentar.
    • línea de base: debe ser un número. Es el número que indica cuando el entrenamiento no se mantiene al día con este valor, el entrenamiento se detendrá. Es la línea final para la cantidad que se monitorea.
    • restoreBestWeights: debe ser un valor booleano. Indica si restaurar el mejor valor de la cantidad monitoreada en cada época o no.

Valor devuelto: Devuelve un objeto (EarlyStopping).

A continuación se muestran algunos ejemplos de esta función.

Ejemplo 1: En este ejemplo veremos cómo usar la función tf.callbacks.earlyStopping() en fitDataset:

Javascript

import * as tf from "@tensorflow/tfjs";
  
const xArray = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [8, 7, 6, 5],
    [1, 2, 3, 4],
];
  
const x1Array = [
    [0, 1, 0.5, 0],
    [1, 0.5, 0, 1],
    [0.5, 1, 1, 0],
    [1, 0, 0, 1],
];
  
const yArray = [1, 2, 3, 4];
const y1Array = [4, 3, 2, 1];
  
// Create a dataset from the JavaScript array.
const xDataset = tf.data.array(xArray);
const x1Dataset = tf.data.array(x1Array);
const y1Dataset = tf.data.array(x1Array);
const yDataset = tf.data.array(yArray);
  
// Combining the Dataset with zip function
const xyDataset = tf.data
    .zip({ xs: xDataset, ys: yDataset })
    .batch(4)
    .shuffle(4);
const xy1Dataset = tf.data
    .zip({ xs: x1Dataset, ys: y1Dataset })
    .batch(4)
    .shuffle(4);
  
// Creating model
const model = tf.sequential();
model.add(
    tf.layers.dense({
        units: 1,
        inputShape: [4],
    })
);
  
// Compiling model
model.compile({ loss: "meanSquaredError", 
    optimizer: "sgd", metrics: ["acc"] });
  
// Using tf.callbacks.earlyStopping in fitDataset.
const history = await model.fitDataset(xyDataset, {
    epochs: 10,
    validationData: xy1Dataset,
    callbacks: tf.callbacks.earlyStopping({ 
        monitor: "val_acc" }),
});
  
// Printing value
console.log("The value of val_acc is :", 
    history.history.val_acc);

Salida: el valor que obtiene es diferente porque con el valor de entrenamiento cambia su valor val_acc.

The value of val_acc is :0.4375,0.375

Ejemplo 2: En este ejemplo, veremos cómo usar tf.callbacks.earlyStopping() con fit:

Javascript

import * as tf from "@tensorflow/tfjs";
  
// Creating tensor for training
const x = tf.tensor([5, 6, 7, 8, 9, 2], [3, 2]);
const x1 = tf.tensor([8, 7, 6, 5, 2, 9], [3, 2]);
const y = tf.tensor([1, 3, 3, 4, 4, 6, 6, 8, 9], [3, 3]);
const y1 = tf.tensor([2, 2, 2, 1, 5, 5, 2, 3, 8], [3, 3]);
  
// Creating model
const model = tf.sequential();
  
model.add(
    tf.layers.dense({
        units: 3,
        inputShape: [2],
    })
);
  
// Compiling model
model.compile({ loss: "meanSquaredError", 
    optimizer: "sgd", metrics: ["acc"] });
  
// Using tf.callbacks.earlyStopping in fit.
const history = await model.fit(x, y, {
    epochs: 10,
    validationData: [x1, y1],
    callbacks: tf.callbacks.earlyStopping({ 
        monitor: "val_acc" }),
});
  
// Printing value
console.log("the value of val_acc is :", 
    history.history.val_acc);

Salida: el valor de su código de ejecución será diferente porque con los cambios de valor de datos de entrenamiento:

the value of val_acc is : 0.3333333432674408,0.3333333432674408

Referencia: https://js.tensorflow.org/api/latest/#callbacks.earlyStopping

Publicación traducida automáticamente

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