Aprendizaje automático en TypeScript: reseña de bibliotecas y herramientas
TypeScript no es solo un tipado estricto para JavaScript. Gracias a su ecosistema y compatibilidad con JS, se convierte en una plataforma potente para el aprendizaje automático (ML) directamente en el navegador o en el servidor (Node.js). En este artículo, analizaremos cuatro bibliotecas clave que permiten desarrollar, entrenar y ejecutar modelos de ML en TypeScript.
1. TensorFlow.js — el buque insignia del ML en TypeScript
TensorFlow.js es un puerto del popular framework TensorFlow a JavaScript/TypeScript. Es compatible tanto con el navegador como con Node.js. La principal ventaja es la capacidad de realizar entrenamiento e inferencia directamente en el lado del cliente sin enviar datos al servidor.
Instalación
npm install @tensorflow/tfjsnpm install @tensorflow/tfjs-node // para Node.js con aceleración de CPUnpm install @tensorflow/tfjs-node-gpu // para GPUEjemplo: regresión lineal en TypeScript
import * as tf from '@tensorflow/tfjs';
// Creamos un modelo simple: y = 2x - 1const model = tf.sequential();model.add(tf.layers.dense({ units: 1, inputShape: [1] }));
// Compilaciónmodel.compile({ optimizer: 'sgd', loss: 'meanSquaredError' });
// Datos de entrenamientoconst xs = tf.tensor2d([0, 1, 2, 3, 4], [5, 1]);const ys = tf.tensor2d([-1, 1, 3, 5, 7], [5, 1]);
// Entrenamientomodel.fit(xs, ys, { epochs: 250 }).then(() => { // Predicción para x=5 const output = model.predict(tf.tensor2d([5], [1, 1])) as tf.Tensor; output.print(); // ≈ 9 (2*5 - 1)});TensorFlow.js también admite la carga de modelos preentrenados (por ejemplo, MobileNet para clasificación de imágenes) y el trabajo con gráficos de computación.
2. ML5.js — ML para proyectos creativos
ML5.js está construido sobre TensorFlow.js y está orientado a la simplicidad de uso. Es ideal para artistas, diseñadores y principiantes en ML. La biblioteca proporciona APIs de alto nivel para tareas de clasificación, generación de texto, reconocimiento de gestos, etc.
Instalación
npm install ml5Ejemplo: clasificación de imágenes (MobileNet)
import * as ml5 from 'ml5';
// Cargamos el modelo preentrenado MobileNetconst classifier = ml5.imageClassifier('MobileNet');
// Clasificamos una imagen por URLconst img = new Image();img.crossOrigin = 'anonymous';img.src = 'https://example.com/cat.jpg';
img.onload = () => { classifier.classify(img, (err: Error | null, results: any[]) => { if (err) { console.error(err); return; } console.log('Resultados:', results); // [{ label: 'tabby cat', confidence: 0.98 }, ...] });};ML5.js carga automáticamente los pesos del modelo y proporciona un callback simple. Es perfecto para prototipos rápidos e instalaciones interactivas.
3. Brain.js — redes neuronales sin complicaciones
Brain.js es una biblioteca para crear redes neuronales con una cantidad mínima de código. Admite redes feedforward, LSTM y RNN. Funciona tanto en el navegador como en Node.js.
Instalación
npm install brain.jsEjemplo: función XOR (O exclusivo lógico)
import * as brain from 'brain.js';
const net = new brain.NeuralNetwork();
net.train([ { input: [0, 0], output: [0] }, { input: [0, 1], output: [1] }, { input: [1, 0], output: [1] }, { input: [1, 1], output: [0] }], { iterations: 10000, errorThresh: 0.005});
const output = net.run([1, 0]); // ≈ 0.98 (cercano a 1)console.log(`Resultado: ${output}`);Brain.js normaliza automáticamente los datos y admite guardar/cargar el modelo entrenado en JSON.
4. Synaptic — flexibilidad arquitectónica
Synaptic es una biblioteca para crear arquitecturas de redes neuronales complejas: perceptrones, redes multicapa
También en la biblioteca
Geolocalización y mapas en Go (Golang): bibliotecas y ejemplos
NetworkExtension Swift: guía completa con ejemplos prácticos
Planificador de tareas en Rust: creación de un job scheduler robusto
Trabajo con YAML en Go (Golang): bibliotecas go-yaml y yaml.v3