Introducción a TensorFlow.js: 3 conceptos básicos
En el artículo de la semana pasada hicimos una pequeña presentación de TensorFlow y TensorFlow.js.
En el artículo de hoy vamos a ver algunas de las características básicas de TensorFlow.js, que podrás usar en tus aplicaciones web si quieres añadirles habilidades de aprendizaje automático (machine learning).
¿Qué es TensorFlow.js?
Como bien recuerdas, TensorFlow.js es una biblioteca de JavaScript que permite agregar capacidades de aprendizaje automático a cualquier aplicación web.
Conceptos básicos de TensorFlow.js
TensorFlow.js posee algunas características básicas que vale la pena conocer desde el inicio.
1. Tensores
Los tensores son la unidad central de datos en TensorFlow. Un tensor puede ser unidimensional o multidimensional, y contiene un conjunto de valores numéricos. Cuando creas un nuevo Tensor debes definir si es unidimensional o multidimensional, o sea, su forma.
Por ejemplo, si quieres definir un tensor cuya forma tiene dos líneas y dos columnas, usando la función tensor, defines la forma pasándole un segundo argumento:
const miTensor = tf.tensor([1,2,3,4], [2,2]);
tendrías el tensor:
[[1,2],
[3,4]]
TensorFlow es aprendizaje automático, por tanto si defines simplemente el tensor
const miSegundoTensor = tf.tensor(([1,2],[3,4]));
el resultado será el mismo, ya que TensorFlow puede inferir la forma de un tensor.
Funciones de utilidad de TensorFlow
TensorFlow te permite también utilizar las siguientes funciones, para casos comunes, para definir las dimensiones, si quieres mejorar la legibilidad:
- tf.scalar. Tensor con un solo valor.
- tf.tensor1d. Tensor con una dimensión.
- tf.tensor2d. Tensor con dos dimensiones.
- tf.tensor3d. Tensor con tres dimensiones.
- tf.tensor4d. Tensor con cuatro dimensiones.
Creo que vale la pena tener en cuenta que los tensores son inmutables, una vez creados no se pueden cambiar después. Si realizas una operación que cambia los valores de un tensor, se crea y devuelve un nuevo tensor.
2. Operaciones
Las operaciones de TensorFlow te permiten manipular los datos de un tensor. Como hemos dicho anteriormente, los tensores son inmutables. Esto significa que todas las operaciones devuelven siempre nuevos tensores y nunca modifican los tensores de entrada.
TensorFlow.js te proporciona desde operaciones aritméticas básicas, que puedes suponer rápidamente que significan, como add, sub, mul, o square, a operaciones básicas con matrices, reducciones, o normalizaciones.
En consecuencia, si, por ejemplo, quieres aplicar la operación al cuadrado a un tensor bidimensional, puedes simplemente declarar lo siguiente:
const miSegundoTensor = tf.tensor2d([1,2], [3,4]);
const miSegundoTensorCuadrado = miSegundoTensor.square();
Y tu nuevo tensor tendrá los siguientes valores:
[[1,4],
[9, 16]]
3. Modelos y Capas
Las capas son el componente principal para construir un Modelo. Cada capa normalmente realizará cálculos para transformar su entrada en su salida.
Los modelos son una de las abstracciones principales utilizadas en las capas de TensorFlow.js. Se pueden entrenar, evaluar y utilizar para la predicción.
Por tanto, los modelos y las capas son los dos bloques de construcción más importantes cuando se trata de aprendizaje profundo (deep learning). Cada modelo se compone de una o más capas, y TensorFlow admite diferentes tipos de capas. Diferentes tareas de aprendizaje automático requieren diferentes tipos de capas.
Conclusión
Para concluir, hemos visto solamente algunas de las características más importantes de TensorFlow.js. Entenderlas antes de entrar en materia es importante para fundamentar el conocimiento.
Puedes leer más información sobre la API de TensorFlow en el sitio web oficial de TensorFlow.
¿Qué concepto de TensorFlow.js te resulta más difícil de entender? ¡Coméntalo abajo!
Foto: knssr2 @freepik
Fuentes: