Aprendizaje automático en JavaScript: bibliotecas para Node.js
Aunque Python sigue siendo el lenguaje dominante en el ámbito del aprendizaje automático, el ecosistema de JavaScript (especialmente Node.js) se está desarrollando activamente y ofrece potentes herramientas para ML. El uso de JavaScript permite crear soluciones de ML que se integran fácilmente con aplicaciones web, funcionan en tiempo real en el servidor o incluso en el navegador. Si tu proyecto ya usa Node.js, la incorporación de bibliotecas de aprendizaje automático puede ser más orgánica que cambiar a Python.
En este artículo, revisaremos las bibliotecas clave para el aprendizaje automático en JavaScript (Node.js), sus características y ejemplos de uso.
1. TensorFlow.js
TensorFlow.js es la biblioteca más potente y popular para el aprendizaje automático en JavaScript, portada del TensorFlow original. Admite la ejecución de modelos tanto en el navegador como en Node.js, utilizando aceleración por hardware a través de CUDA o WebGL.
Características principales:
- Ejecución de modelos preentrenados (MobileNet, BERT, YOLO).
- Entrenamiento de redes neuronales desde cero.
- Aprendizaje por transferencia (refinamiento de modelos existentes).
- Soporte para GPU mediante CUDA en Node.js.
- Conversión de modelos desde Python TensorFlow (formato TFJS).
Ejemplo: regresión lineal con TensorFlow.js
const tf = require('@tensorflow/tfjs-node');
// Datos: x -> y (y = 2x - 1)const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);
// Creación del modeloconst model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
// Entrenamientomodel.fit(xs, ys, {epochs: 200}).then(() => { // Predicción para x = 5 model.predict(tf.tensor2d([5], [1, 1])).print();});2. Brain.js
Brain.js es una biblioteca simple e intuitiva para redes neuronales. Es ideal para principiantes y proyectos pequeños. Admite perceptrones multicapa (MLP), redes recurrentes (RNN) y redes de memoria a largo plazo (LSTM).
Características principales:
- Barrera de entrada mínima: API de solo unas pocas líneas.
- Soporte para entrenamiento asíncrono para evitar bloqueos.
- Guardado y carga de modelos entrenados en JSON.
- Funciona tanto en Node.js como en el navegador.
Ejemplo: XOR con Brain.js
const brain = require('brain.js');
const net = new brain.NeuralNetwork();
// Datos de entrenamiento para XORnet.train([ {input: [0, 0], output: [0]}, {input: [0, 1], output: [1]}, {input: [1, 0], output: [1]}, {input: [1, 1], output: [0]}]);
// Pruebaconst output = net.run([1, 0]); // ~0.99console.log(output);3. Synaptic
Synaptic es una biblioteca independiente de arquitectura para redes neuronales. Permite construir prácticamente cualquier tipo de red: perceptrones, redes multicapa, redes con memoria (LSTM), redes de Hopfield y otras. La biblioteca no tiene dependencias externas.
Características principales:
- Flexibilidad en la construcción de arquitecturas.
- Soporte para varios algoritmos de entrenamiento (SGD, Momentum, Nesterov).
- Visualizador de redes (en el navegador).
- Soporte para guardar/cargar modelos.
Ejemplo: red neuronal simple con Synaptic
const synaptic = require('synaptic');const {Layer, Network, Trainer} = synaptic;
const inputLayer = new Layer(2);const hiddenLayer = new Layer(3);const outputLayer = new Layer(1);
inputLayer.connect(hiddenLayer);hiddenLayer.connect(outputLayer);
const myNetwork = new Network({input: inputLayer, hidden: [hid También en la biblioteca
Rate Limiting en PHP: Limitación de frecuencia de solicitudes para proteger el sitio
Awaitility en Java: guía completa con ejemplos prácticos
msw para TypeScript: guía completa con ejemplos prácticos