Aprendizado de Máquina em TypeScript: visão geral de bibliotecas e ferramentas
TypeScript não é apenas tipagem estrita para JavaScript. Graças ao seu ecossistema e compatibilidade com JS, ele se torna uma plataforma poderosa para aprendizado de máquina (ML) diretamente no navegador ou no servidor (Node.js). Neste artigo, analisaremos quatro bibliotecas principais que permitem desenvolver, treinar e executar modelos de ML em TypeScript.
1. TensorFlow.js — o carro-chefe do ML em TypeScript
TensorFlow.js é uma versão do popular framework TensorFlow para JavaScript/TypeScript. Ele suporta tanto o navegador quanto o Node.js. A principal vantagem é a capacidade de realizar treinamento e inferência diretamente no lado do cliente, sem enviar dados para o servidor.
Instalação
npm install @tensorflow/tfjsnpm install @tensorflow/tfjs-node // para Node.js com aceleração de CPUnpm install @tensorflow/tfjs-node-gpu // para GPUExemplo: regressão linear em TypeScript
import * as tf from '@tensorflow/tfjs';
// Criando um modelo simples: y = 2x - 1const model = tf.sequential();model.add(tf.layers.dense({ units: 1, inputShape: [1] }));
// Compilaçãomodel.compile({ optimizer: 'sgd', loss: 'meanSquaredError' });
// Dados de treinamentoconst xs = tf.tensor2d([0, 1, 2, 3, 4], [5, 1]);const ys = tf.tensor2d([-1, 1, 3, 5, 7], [5, 1]);
// Treinamentomodel.fit(xs, ys, { epochs: 250 }).then(() => { // Previsão para x=5 const output = model.predict(tf.tensor2d([5], [1, 1])) as tf.Tensor; output.print(); // ≈ 9 (2*5 - 1)});TensorFlow.js também suporta o carregamento de modelos pré-treinados (por exemplo, MobileNet para classificação de imagens) e trabalho com grafos computacionais.
2. ML5.js — ML para projetos criativos
ML5.js é construído sobre o TensorFlow.js e é focado na simplicidade de uso. Ideal para artistas, designers e iniciantes em ML. A biblioteca fornece APIs de alto nível para tarefas de classificação, geração de texto, reconhecimento de gestos, etc.
Instalação
npm install ml5Exemplo: classificação de imagens (MobileNet)
import * as ml5 from 'ml5';
// Carregando o modelo pré-treinado MobileNetconst classifier = ml5.imageClassifier('MobileNet');
// Classificando uma imagem 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 carrega automaticamente os pesos do modelo e fornece um callback simples. É excelente para protótipos rápidos e instalações interativas.
3. Brain.js — redes neurais sem complicações
Brain.js é uma biblioteca para criar redes neurais com o mínimo de código. Suporta redes feedforward, LSTM e RNN. Funciona tanto no navegador quanto no Node.js.
Instalação
npm install brain.jsExemplo: função XOR (OU 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 (próximo de 1)console.log(`Resultado: ${output}`);Brain.js normaliza automaticamente os dados e suporta salvar/carregar o modelo treinado em JSON.
4. Synaptic — flexibilidade arquitetural
Synaptic é uma biblioteca para criar arquiteturas complexas de redes neurais: perceptrons, redes multicamadas