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

Tensorflow.js es un conjunto de herramientas de código abierto desarrollado por Google para ejecutar modelos de aprendizaje automático y redes neuronales de aprendizaje profundo en el navegador o en la plataforma del Node. También permite a los desarrolladores crear modelos de aprendizaje automático en JavaScript y utilizarlos directamente en el navegador o con Node.js.

La función tf.layers.simpleRNN() se usa para crear una capa RNN que consta de una sola SimpleRNNCell.

Sintaxis:

tf.layers.simpleRNN(args)

Parámetros: Acepta el objeto args el cual puede tener las siguientes propiedades:

  • unidades (número): las dimensiones del espacio de salida, expresadas como un número entero positivo.
  • activación: La función de activación de la capa.
  • useBias (booleano): si la capa tiene un vector de sesgo o no. Verdadero es el valor predeterminado.
  • kernelInitializer: el inicializador de la array de pesos del kernel convolucional.
  • recurrentInitializer:  el inicializador de la array de ponderaciones del kernel recurrente. Se utiliza para la transformación lineal del estado recurrente.
  • biasInitializer: el inicializador del vector de polarización.
  • kernelRegularizer: la función de regularización aplicada a la array de pesos del kernel.
  • recurrentRegularizer: la función de regularizador aplicada a la array de ponderaciones del kernel recurrente.
  • biasRegularizer: la función de regularización aplicada al vector de sesgo.
  • kernelConstraint: La restricción para los pesos del núcleo convolucional.
  • recurrentConstraint: la restricción para los pesos recurrentes de Kernel.
  • biasConstraint: la restricción para el vector de sesgo.
  • dropout (número): Es un número entre 0 y 1. La fracción de las unidades a bajar para la transformación lineal de las entradas.
  • RecurrentDropout (número): Es un número entre 0 y 1. La fracción de las unidades a caer para la transformación lineal del estado recurrente.
  • dropoutFunc: Esto se incluye con el propósito de probar DI.
  • celda: Una instancia de celda RNN.
  • returnSequences (booleano): indica si se debe devolver la salida final de la serie de salida o si se debe devolver la secuencia completa.
  • returnState (booleano): si el último estado debe devolverse o no junto con la salida.
  • goBackwards (booleano): si esto es cierto, procesa la secuencia de entrada hacia atrás y devuelve la secuencia invertida. El valor predeterminado es falso.
  • con estado (booleano): si es verdadero, el estado final de cada muestra en el índice I en un lote se usará como el estado inicial de la muestra del siguiente lote en el índice i (predeterminado: falso).
  • unroll (booleano): la red se desenrollará si es verdadero; de lo contrario, se utilizará un bucle simbólico. Aunque el desenrollado puede acelerar un RNN, consume más memoria. Solo se aceptan secuencias cortas para desenrollar (predeterminado: falso).
  • inputDim (número): la dimensionalidad de la entrada (entero). Cuando esta capa se utiliza como capa inicial en un modelo, esta opción (o la opción inputShape) es necesaria.
  • inputLength (número): Cuando la longitud de las secuencias de entrada es constante, se debe dar. Si desea vincular las capas Flatten y Dense aguas arriba, necesitará este parámetro (sin él, no se puede calcular la forma de las salidas densas).
  • inputShape: si se establece esta propiedad, se utilizará para construir una capa de entrada que se insertará antes de esta capa. 
  • batchInputShape: si se establece esta propiedad, se creará e insertará una capa de entrada antes de esta capa. 
  • batchSize: si no se proporciona batchInputShape y sí inputShape, se utiliza batchSize para crear el batchInputShape.
  • dtype: Es el tipo de tipo de datos para esta capa. float32 es el valor predeterminado. Este parámetro se aplica exclusivamente a las capas de entrada.
  • nombre: Este es el nombre de la capa y es de tipo string.
  • entrenable: si los pesos de esta capa se pueden cambiar por ajuste. Verdadero es el valor predeterminado.
  • pesos: Los valores de peso iniciales de la capa.
  • inputDType: se utiliza para el soporte heredado.

Devoluciones: Devuelve un objeto (SimpleRNN).

Ejemplo 1:

Javascript

import * as tf from "@tensorflow/tfjs";
  
const input = tf.input({ shape: [4, 3] });
const simpleRNNLayer = tf.layers.simpleRNN({ 
    units: 4, 
    returnSequences: true, 
    returnState: true 
});
  
let output, finalState;
  
[output, finalState] = simpleRNNLayer.apply(input);
  
const model = tf.model({ 
    inputs: input, 
    outputs: output 
});
  
const x = tf.tensor3d([1, 2, 3, 4, 5, 6, 7, 
        8, 9, 10, 11, 12], [1, 4, 3]);
          
model.predict(x).print();

Producción:

Tensor
   [[[0.9078521, -0.9811671, 0.7162469, 0.9916067],
     [0.9999183, -0.9997805, 0.8239585, 0.9999147],
     [0.9999995, -0.9999998, 0.9744635, 0.9999991],
     [1        , -1        , 0.9965866, 1        ]]]

Ejemplo 2:

Javascript

import * as tf from "@tensorflow/tfjs";
  
const input = tf.input({ shape: [5, 4] });
const simpleRNNLayer = tf.layers.simpleRNN({
    units: 8, 
    returnSequences: true,
    returnState: true
});
  
let output, finalState;
  
[output, finalState] = simpleRNNLayer.apply(input);
  
const model = tf.model({ inputs: input, outputs: output });
  
const x = tf.tensor3d([1, 2, 3, 4, 5, 6, 7, 
    8, 9, 10, 11, 12, 13, 14, 15, 
    16, 17, 18, 19, 20], [1, 5, 4]
);
  
model.predict(x).print();

Producción:

Tensor
   [[[0.2636383 , 0.9990318, 0.1660565, 0.9994429, -0.1762104, -0.9415753, 0.2943841, 0.7435381],
     [-0.9700606, 0.9999998, 0.5248303, 1        , -0.6762528, -0.9998503, 0.7585124, 0.836854 ],
     [-0.9959837, 1        , 0.5081902, 1        , -0.9194239, -0.9999997, 0.9733018, 0.988907 ],
     [-0.9993195, 1        , 0.8597047, 1        , -0.9791942, -1        , 0.9934399, 0.9968426],
     [-0.999855 , 1        , 0.9431108, 1        , -0.9907937, -1        , 0.9975212, 0.9990824]]]

Referencia: https://js.tensorflow.org/api/latest/#layers.simpleRNN

Publicación traducida automáticamente

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