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:
- clase tf.layers.Layer . aplicar() método
- clase tf.layers.Layer . método countParams()
- clase tf.layers.Layer . construir() método
- clase tf.layers.Layer . método getWeights()
- clase tf.layers.Layer . método setWeights()
- clase tf.layers.Layer . método addWeight()
- clase tf.layers.Layer . método addLoss()
- clase tf.layers.Layer . ComputeOutputShape() método
- clase tf.layers.Layer . método getConfig()
- clase tf.layers.Layer . disponer() método
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