Función Tensorflow.js tf.layers.rnn()

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 Tensorflow.js tf.layers.rnn() es básicamente una clase base para capas recurrentes. 

Sintaxis:

tf.layers.rnn( args );

Parámetros: 

  • args: Es un objeto con los siguientes campos:
    • celda: debe ser una instancia de una celda RNN o una array de instancias de celdas RNN.
    • returnSequences:   Debe ser booleano. Define cuál de estos dos resiste la última salida o el retorno de secuencia completa en la secuencia de salida.
    • returnState: debe ser booleano. Define el último estado de retorno en la salida. 
    • goBackwards: debe ser booleano. Define si procesar la entrada en secuencia inversa e inversa o no. 
    • stateful: Debe ser booleano. Define si usar el último estado del lote como estado inicial para el lote actual o no. 
    • unroll: debe ser booleano. Indica si usar la red desenrollada o si usar un bucle simbólico. 
    • inputDim: Debe ser un número. Esto se usa cuando esta capa se usa como la primera capa del modelo. Define la dimensión de entrada en la capa. 
    • inputLength: Debe ser un número. Este campo debe estar cuando la secuencia en los datos de entrada es constante. 
    • inputShape: debe ser una array de números. Este campo se usa para crear una capa de entrada que se usa para insertarse antes de esta capa. 
    • batchInputShape: debe ser una array de números. Este campo se usará si inputShape y este campo se proporcionan como un parámetro para crear la capa de entrada que se usa para insertar antes de esta capa. 
    • tamaño del lote: debe ser un número. En ausencia de batchInputShape, este campo se usa para crear batchInputShape con inputShape. batchInputShape : [ tamaño del lote , … forma de entrada ].
    • dtype: si esta capa se usa como capa de entrada, este campo se usa como el tipo de datos para esta capa. 
    • nombre: Debe ser un tipo de string. este campo define el nombre de esta capa. 
    • entrenable: debe ser booleano. Este campo define si los pesos de esta capa se pueden entrenar con ajuste o no.
    • pesos: Este debería ser un tensor que defina el valor de peso inicial para esta capa.
    • inputDType: este es el tipo de datos que se utiliza para el soporte heredado.

Valor devuelto: Devuelve RNN.

Esta capa admite el enmascaramiento de datos de entrada con cualquier número de intervalos de tiempo. Podemos configurar las capas RNN para que tengan ‘estado’, lo que significa que el estado calculado para las muestras en un lote se reutilizará como estados iniciales para el siguiente lote. 

La forma de entrada debe ser un tensor 3D con forma [batchSize, timeSteps, inputDim]

Según los parámetros y valores proporcionados a esta capa, obtenemos la forma de la capa de salida: 

Ejemplo 1: si returnState se establece como verdadero, esta función devuelve una array de tensor en la que el primer tensor es la salida. los tensores restantes son el estado en los últimos pasos de tiempo. La forma de todos los tensores en la array será [tamaño del lote, unidades].

Javascript

// Cells for RNN
const cells = [
   tf.layers.lstmCell({units: 4}),
   tf.layers.lstmCell({units: 8}),
];
const rnn = tf.layers.rnn({cell: cells, returnState:true });
 
// Create an input with 8 time steps and
// 16 length vector at each step.
const Input_layer = tf.input({shape: [8, 16]});
const Output_layer = rnn.apply(Input_layer);
 
console.log(JSON.stringify(Output_layer[0].shape));

Producción:

​[null, 8]

Ejemplo 2: si returnState no está establecido y returnSequence está establecido en verdadero, el tensor de salida tendrá la forma: [batchSize, timeSteps, units].

Javascript

// Cells for RNN
const cells = [
    tf.layers.lstmCell({units: 16}),
    tf.layers.lstmCell({units: 32}),
];
const rnn = tf.layers.rnn({
    cell: cells,
    returnState: false,
    returnSequences: true
});
 
// Create an input with 8 time steps and
// 16 length vector at each step.
const Input_layer = tf.input({shape: [4, 8]});
const Output_layer = rnn.apply(Input_layer);
console.log(JSON.stringify(Output_layer.shape));

Producción:

[null,4,32]

Ejemplo 3: si returnState y returnSequnces no están definidos, la forma de la salida será [tamaño del lote, unidades].

Javascript

// Cells for RNN
const cells = [
   tf.layers.lstmCell({units: 4}),
   tf.layers.lstmCell({units: 8}),
];
const rnn = tf.layers.rnn({cell: cells});
 
// Create an input with 10 time steps and
// 20 length vector at each step.
const input = tf.input({shape: [10, 20]});
const output = rnn.apply(input);
 
console.log(JSON.stringify(output.shape));

Producción:

[null,8]

Referencias: https://js.tensorflow.org/api/latest/#layers.rnn

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 *