Tensorflow.js tf.LayersModel clase .evaluateDataset() Método

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

La función .evaluateDataset() se utiliza para evaluar el modelo establecido por medio de un objeto de conjunto de datos establecido.

Nota: este método difiere de evaluar(), ya que es asíncrono.

Sintaxis:

evaluateDataset(dataset, args?)

Parámetros:  

  • conjunto de datos: el objeto del conjunto de datos indicado. Cuyo método iterator() se espera para producir un objeto iterador de conjunto de datos, se espera su método next() para generar lotes de datos para su evaluación. Además, el valor de retorno de la llamada next() debe contener un campo booleano hecho, así como un campo de valor. Donde es probable que el campo de valor sea una array de dos tf.Tensors o una array de dos compilaciones anidadas de tf.Tensor. El primer caso es para modelos con exactamente una entrada y una salida, es decir, un modelo secuencial. Este último caso está a favor de los modelos junto con varias entradas y/o varias salidas. De dos elementos en la array, el primero es la(s) característica(s) de entrada y el segundo es el(los) objetivo(s) de salida. Es de tipo tf.data.Dataset.
  • args: el objeto de configuración declarado a favor de la evaluación basada en el conjunto de datos. Es opcional y es de tipo objeto. Los siguientes argumentos vienen debajo de él:
    1. lotes: el número indicado de lotes que se arrastrarán desde el objeto del conjunto de datos dado antes de finalizar la evaluación. Es de tipo número.
    2. verbose: El modo de verbosidad indicado. Es de tipo ModelLoggingVerbosity .

Valor devuelto: Devuelve la promesa de tf.Scalar o tf.Scalar[].

Ejemplo 1:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining an array x
const Array_x = [
   [1, 1, 1, 1, 1, 1, 1, 1],
   [1, 1, 1, 1, 1, 1, 1, 1],
   [1, 1, 1, 1, 1, 1, 1, 1],
   [1, 1, 1, 1, 1, 1, 1, 1],
];
  
// Defining an array y
const Array_y = [1, 1, 1, 1];
  
// Defining dataset of x
const Dataset_x = tf.data.array(Array_x);
  
// Defining dataset of y
const Dataset_y = tf.data.array(Array_y);
  
// Defining dataset of xy using zip method
const Dataset_xy = tf.data.zip({xs: Dataset_x, ys: Dataset_y})
     .batch(5)
     .shuffle(3);
  
// Defining model
const mymodel = tf.sequential({
   layers: [tf.layers.dense({units: 1, inputShape: [8]})]
});
  
// Compiling model
mymodel.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
  
// Calling evaluateDataset() method
const res = await mymodel.evaluateDataset(Dataset_xy, 
tf.ones([7, 10]), tf.ones([7, 1]), {
   batchSize: 5,
});
  
// Printing output
res.print();

Producción:

Tensor
    0.9196577668190002

Ejemplo 2:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining dataset of xy using zip method
const Dataset_xy = tf.data.zip({
    xs: tf.data.array([[1, 0, 1, 2, 1]]), 
    ys: tf.data.array([1, 2, 1, 3])})
    .batch(8);
  
// Defining model
const mymodel = tf.sequential({
   layers: [tf.layers.dense(
      {units: 1, inputShape: [5], activation: 'sigmoid'})
   ]
});
  
// Compiling model
mymodel.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
  
// Calling evaluateDataset() method
const res = await mymodel.evaluateDataset(
    Dataset_xy, tf.truncatedNormal([7, 10]), 
        tf.randomNormal([7, 1]), 
        {batchSize: 2, steps: 1}
    );
  
// Printing output
console.log(JSON.stringify(res));

Producción:

{"kept":false,"isDisposedInternal":false,"shape":[],"dtype":"float32",
"size":1,"strides":[],"dataId":{"id":6923},"id":4594,
"rankType":"0","scopeId":4223}

Referencia: https://js.tensorflow.org/api/latest/#tf.LayersModel.evaluateDataset

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 *