Clase Tensorflow.js tf.layers.Layer

Introducción: 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 clase tf.layers.Layer se usa para extender la clase serialization.Serializable. Además, una capa es una agrupación de procesos y pesos que se pueden recopilar para construir un tf.LayersModel. Las capas se crean aplicando las funciones que se incluyen en el espacio de nombres tf.layers.

Esta clase tf.layers.Layer contiene diez métodos incorporados que se ilustran a continuación:  

1. Método .apply() de la clase tf.layers.Layer: se utiliza para ejecutar el cálculo de las capas y devolver el(los) tensor(es) cuando lo llamamos con el(los) tf.Tensor(es). Si lo llamamos con tf.SymbolicTensor(s), preparará la capa para su futura ejecución.

Ejemplo:

Javascript

import * as tf from "@tensorflow/tfjs"
  
const denseLayer = tf.layers.dense({
units: 1,
kernelInitializer: 'ones',
useBias: false
});
  
const input = tf.ones([2, 2]);
const output = denseLayer.apply(input);
  
// Print the output
print(output)

Producción:

Tensor [[2], [2]]

2. Método tf.layers.Layer class .countParams(): se utiliza para encontrar el recuento absoluto de números como float32, int32 en los pesos indicados.

Ejemplo:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units: 2, inputShape: [11]}));
  
// Calling setWeights() method
model.layers[0].setWeights(
    [tf.truncatedNormal([11, 2]), tf.zeros([2])]);
  
// Calling countParams() method and also
// Printing output
console.log(model.layers[0].countParams());

Producción:

24

3. Método tf.layers.Layer class .build(): Se utiliza para crear los pesos de la capa indicada. Este método debe aplicarse en todas las capas que soportan pesos. Además, se invoca cuando se invoca el método apply() para generar los pesos.

Ejemplo:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units: 1, inputShape: [3]}));
  
// Defining input
const input = tf.input({shape: [6, 2, 6]});
  
// Calling build method with its
// parameter
model.layers[0].build([input.Shape]);
  
// Printing output
console.log(JSON.stringify(input.shape));
model.layers[0].getWeights()[0].print();

Producción:

[null,6,2,6]
Tensor
    [[-0.3726568],
     [0.7343086 ],
     [-0.2459907]]

4. Método tf.layers.Layer class .getWeights(): Se utiliza para obtener los valores de los pesos de un tensor.

Ejemplo:

Javascript

// Creating a model
const model = tf.sequential();
  
// Adding layers
model.add(tf.layers.dense({units: 2, inputShape: [5]}));
model.add(tf.layers.dense({units: 3}));
  
model.compile({loss: 'categoricalCrossentropy', optimizer: 'sgd'});
  
// Printing the weights of the layers
model.layers[0].getWeights()[0].print()
model.layers[0].getWeights()[1].print()

Producción:

Tensor
    [[-0.4756567, 0.2925433 ],
     [0.3505997 , -0.5043278],
     [0.5344347 , 0.2662918 ],
     [-0.1357223, 0.2435055 ],
     [-0.6059403, 0.1990891 ]]
Tensor
    [0, 0]

5. Método tf.layers.Layer class .setWeights(): Se utiliza para establecer los pesos de la capa indicada, a partir de los tensores dados.

Ejemplo:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units: 2, inputShape: [11]}));
  
// Calling setWeights() method
model.layers[0].setWeights([tf.truncatedNormal([11, 2]), tf.zeros([2])]);
  
// Compiling the model
model.compile({loss: 'categoricalCrossentropy', optimizer: 'sgd'});
  
// Printing output using getWeights() method
model.layers[0].getWeights()[0].print();

Producción:

Tensor
    [[-0.5969906, -0.1883931],
     [0.8569255 , -0.49416  ],
     [0.1157023 , 0.1150239 ],
     [-0.4052143, 1.9936075 ],
     [0.3090054 , 0.7212474 ],
     [0.4626641 , -0.7287846],
     [0.4352857 , -0.5195332],
     [0.4626429 , 0.0216295 ],
     [-0.1110666, -0.5997615],
     [-0.5083916, -0.3582681],
     [-0.2847465, 1.184485  ]]

 6. Método tf.layers.Layer class .addWeight(): Se utiliza para añadir una variable de peso a la capa indicada.

Ejemplo:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units: 2, inputShape: [1]}));
  
// Calling addWeight() method
const res = model.layers[0].addWeight('wt_var',
        [1, 5], 'int32', tf.initializers.ones());
  
// Printing output
console.log(res);
model.layers[0].getWeights()[0].print();

Producción:

{
  "dtype": "int32",
  "shape": [
    1,
    5
  ],
  "id": 1582,
  "originalName": "wt_var",
  "name": "wt_var_2",
  "trainable_": true,
  "constraint": null,
  "val": {
    "kept": false,
    "isDisposedInternal": false,
    "shape": [
      1,
      5
    ],
    "dtype": "int32",
    "size": 5,
    "strides": [
      5
    ],
    "dataId": {
      "id": 2452
    },
    "id": 2747,
    "rankType": "2",
    "trainable": true,
    "name": "wt_var_2"
  }
}
Tensor
     [[0.139703, 0.9717236],]

7. Método tf.layers.Layer class .addLoss(): Se utiliza para adjuntar pérdidas a la capa indicada. Además, la pérdida probablemente esté condicionada a algunos tensores de entrada, por ejemplo, las pérdidas de operación dependen de las entradas de las capas indicadas.

Ejemplo:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units: 1, inputShape: [3]}));
  
// Defining input
const input = tf.tensor1d([1, 2, 3, 4]);
  
// Calling addLoss() method with its
// parameter
const res = model.layers[0].addLoss([tf.abs(input)]);
  
// Printing output
console.log(JSON.stringify(input));
model.layers[0].getWeights()[0].print();

Producción:

{"kept":false,"isDisposedInternal":false,
"shape":[4],"dtype":"float32",
"size":4,"strides":[],"dataId":{"id":82},
"id":124,"rankType":"1","scopeId":61}
Tensor
    [[0.143441  ],
     [-0.58002  ],
     [-0.5836995]]

 8. Método tf.layers.Layer class .computeOutputShape(): se utiliza para enumerar la forma de salida de la capa indicada. Y supone que la capa se creará para que coincida con la forma de entrada suministrada.

Ejemplo:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units: 1, inputShape: [3]}));
  
// Defining inputShape
const inputShape = [6, 2, 6];
  
// Calling computeOutputShape() method with its
// parameter
const val = model.layers[0].computeOutputShape(inputShape);
  
// Printing output
console.log(val);

Producción:

6,2,1

9. Método tf.layers.Layer class .getConfig(): Se utiliza para obtener la configuración de una capa.

Ejemplo:

Javascript

const tf = require("@tensorflow/tfjs")
  
// Creating a minLayer
const minLayer = tf.layers.minimum();
  
// Getting the configuration of the layer
const config = minLayer.getConfig();
console.log(config)

Producción:

{ name: 'minimum_Minimum1', trainable: true }

 10. Método tf.layers.Layer class .dispose(): Se utiliza para disponer los pesos de las capas indicadas. Además, disminuye el recuento de referencia del objeto de capa indicado en uno.

Ejemplo:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units: 1, inputShape: [3]}));
  
// Calling dispose method
const val = model.layers[0].dispose();
  
// Printing output
console.log(val);

Producción:

{
  "refCountAfterDispose": 0,
  "numDisposedVariables": 2
}

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

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 *