Maschinelles Lernen mit TypeScript: Überblick über ML-Bibliotheken im Jahr 2024
TypeScript erobert sich nicht nur in der Webentwicklung, sondern auch im Data Science-Bereich einen festen Platz. Dank statischer Typisierung und Kompatibilität mit JavaScript wird es zu einem praktischen Werkzeug für die Erstellung von Modellen des maschinellen Lernens (ML), die direkt im Browser oder auf dem Server (Node.js) laufen. In diesem Artikel betrachten wir die wichtigsten Bibliotheken für maschinelles Lernen mit TypeScript, ihre Besonderheiten, Codebeispiele und Anwendungsszenarien.
1. TensorFlow.js — Das wichtigste Framework für ML im Browser
TensorFlow.js ist ein Port des beliebten Frameworks TensorFlow auf JavaScript/TypeScript. Es ermöglicht das Training und die Inferenz von Modellen sowohl im Browser als auch in Node.js. Die Bibliothek unterstützt GPU-Beschleunigung über WebGL und WebGPU, was eine Leistungssteigerung bringt.
Hauptfunktionen:
- Erstellung neuronaler Netze mit einer High-Level-API (tf.sequential, tf.model).
- Laden vortrainierter Modelle aus dem TensorFlow Hub.
- Konvertierung von Modellen aus der Python-Version von TensorFlow in das .json-Format.
- Arbeit mit Tensoren, Optimierern und Schichten.
Beispiel: Lineare Regression mit TypeScript
import * as tf from '@tensorflow/tfjs';
// Daten: Abhängigkeit y = 2x - 1const xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 1]);
// Modell erstellenconst model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));
// Kompilierenmodel.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
// Trainingmodel.fit(xs, ys, {epochs: 250}).then(() => { model.predict(tf.tensor2d([10], [1, 1])).print(); // Ausgabe: ~19 (nahe an 2*10 - 1 = 19)});2. ML5.js — Bibliothek für kreatives ML
ML5.js baut auf TensorFlow.js auf und ist auf einfache Bedienung ausgelegt. Es bietet vorgefertigte Modelle für Bild-, Ton-, Text- und Gestenerkennung. Ideal für Bildungsprojekte und Prototyping.
Beispiel: Bildklassifizierung
import * as ml5 from 'ml5';
// Vortrainiertes MobileNet-Modell ladenconst classifier = ml5.imageClassifier('MobileNet');
// Bild klassifizierenconst img = document.getElementById('myImage') as HTMLImageElement;classifier.classify(img, (err: Error | null, results: any[]) => { if (err) console.error(err); else console.log('Ergebnis:', results[0].label);});3. Brain.js — Neuronale Netze für Node.js und den Browser
Brain.js ist eine leichte Bibliothek zur Erstellung neuronaler Netze in JavaScript/TypeScript. Es unterstützt verschiedene Architekturen: LSTM, RNN, GRU. Ideal für Zeitreihenprognosen und Textverarbeitung.
Beispiel: Einfaches neuronales Netz für XOR
import 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] }]);
const output = net.run([1, 0]); // ~0.99console.log(output);4. Synaptic — Architektonisch flexible Bibliothek
Synaptic ermöglicht die Erstellung neuronaler Netze beliebiger Architektur, einschließlich mehrschichtiger Perzeptrons, rückgekoppelter Netze und selbstorganisierender Karten (Kohonen-Netze). Es benötigt keine Abhängigkeiten und läuft im Browser.
Beispiel: Erstellen eines Perzeptrons
import { Architect, Trainer } from 'synaptic';
const network = new Architect.Perceptron(2, 3, 1);const trainer = new Trainer(network);
trainer.train([ { input: [0, 0], output: [0] }, { input: [0, 1], output: [1] }, { input: [1, 0], output: [1] }, { input: [1, 1], output: [0] }], { iterations: 1000 });
console.log(network.activate([1, 0])); // ~0.98