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.
El método Tensorflow.jstf.Sequential class .fit() se usa para entrenar el modelo para el número fijo de épocas (iteraciones en un conjunto de datos).
Sintaxis:
model.fit( x, y, args?);
Parámetros: Este método acepta los siguientes parámetros:
- x: Es tf.Tensor que contiene todos los datos de entrada.
- y: Es tf.Tensor que contiene todos los datos de salida.
- args: es de tipo objeto, sus variables son las siguientes:
- batchSize: Define el número de muestras que se propagarán a través del entrenamiento.
- epochs: Define la iteración sobre los arreglos de datos de entrenamiento.
- detallado: ayuda a mostrar el progreso de cada época.
Si el valor es 0, significa que no hay ningún mensaje impreso durante la llamada a fit(). Si el valor es 1, significa que en Node-js, imprime la barra de progreso. En el navegador no muestra ninguna acción. El valor 1 es el valor predeterminado. 2: el valor 2 aún no está implementado. - devoluciones de llamada: define la lista de devoluciones de llamada que se llamarán durante el entrenamiento. La variable puede tener una o más de estas devoluciones de llamada onTrainBegin(), onTrainEnd(), onEpochBegin(), onEpochEnd(), onBatchBegin(), onBatchEnd(), onYield().
- ValidationSplit: facilita al usuario dividir el conjunto de datos de entrenamiento en entrenamiento y validación.
Por ejemplo: si el valor es validación-Dividir = 0.5, significa usar el último 50% de los datos antes de barajar para la validación. - ValidationData: se utiliza para dar una estimación del modelo final al seleccionar entre modelos finales.
- shuffle: este valor define la reproducción aleatoria de los datos antes de cada época. no tiene efecto cuando stepsPerEpoch no es nulo.
- classWeight: Se utiliza para ponderar la función de pérdida. Puede ser útil decirle al modelo que preste más atención a las muestras de una clase subrepresentada.
- sampleWeight: Es una array de pesos para aplicar a la pérdida del modelo para cada muestra.
- initialEpoch: Es el valor de definir la época en la que comenzar a entrenar. Es útil para reanudar una carrera de entrenamiento anterior.
- stepsPerEpoch: Define el número de lotes de muestras antes de declarar una época terminada y comenzar la próxima época. Es igual a 1 si no se determina.
- ValidationSteps: es relevante si se especifica stepsPerEpoch. Número total de pasos a validar antes de parar.
- yieldEvery: Define la configuración de la frecuencia de cesión del hilo principal a otras tareas. Puede ser automático, lo que significa que el rendimiento ocurre a una determinada velocidad de fotogramas. lote, si el valor es este, produce cada lote. época, si el valor es este, cede cada época. cualquier número, si el valor es cualquier número, produce cada número en milisegundos. nunca, si el valor es este, nunca produce.
Devoluciones: Promise<Historial>
Ejemplo 1: En este ejemplo entrenaremos nuestro modelo por configuración predeterminada.
Javascript
import * as tf from "@tensorflow/tfjs" // Creating model const model = tf.sequential( ) ; // Adding layer to model const config = {units: 1, inputShape: [1]} const x = tf.layers.dense(config); model.add(x); // Compiling the model const config2 = {optimizer: 'sgd', loss: 'meanSquaredError'} model.compile(config2); // Tensor for training const xs = tf.tensor2d([1, 1.2,1.65, 1.29, 1.4, 1.7], [6, 1]); const ys = tf.tensor2d([1, 0.07,0.17, 0.29, 0.43, 1.02], [6, 1]); // Training the model const Tm = await model.fit(xs, ys); // Printing the loss after training console.log("Loss " + " : " + Tm.history.loss[0]);
Producción:
Loss after Epoch : 2.8400533199310303
Ejemplo 2: En este ejemplo entrenaremos nuestro modelo haciendo alguna configuración.
Javascript
import * as tf from "@tensorflow/tfjs" // Creating model const Model = tf.sequential( ) ; // Adding layer to model const config = {units: 4, inputShape: [2], activation : "sigmoid"} const x = tf.layers.dense(config); Model.add(x); const config2 = {units: 3, activation : "sigmoid"} const y = tf.layers.dense(config2); Model.add(y); // Compiling the model const sgdOpt = tf.train.sgd(0.6) const config3 = {optimizer: 'sgd', loss: 'meanSquaredError'} Model.compile(config3); // Test Tensor const xs = tf.tensor2d([ [0.3, 0.24], [0.12, 0.73], [0.9, 0.54] ]); const ys = tf.tensor2d([ [0.43, 0.5, 0.92], [0.1, 0.39, 0.12], [0.76, 0.4, 0.92] ]); // Training the model for( let i = 0; i < 5; i++){ const config = { shuffle : true, epoch : 10 } const Tm = await Model.fit(xs, ys, config); // Printing the loss after training console.log("Loss " + " : " + Tm.history.loss[0]); }
Producción:
Loss : 0.1362573206424713 Loss : 0.13617873191833496 Loss : 0.13610021770000458 Loss : 0.13602176308631897 Loss : 0.13594339787960052
Referencia: https://js.tensorflow.org/api/3.8.0/#tf.Sequential.fit
Publicación traducida automáticamente
Artículo escrito por satyam00so y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA