Apprentissage automatique en TypeScript : aperçu des bibliothèques ML en 2024

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Apprentissage automatique en TypeScript : aperçu des bibliothèques ML en 2024



TypeScript occupe avec confiance une niche non seulement dans le développement web, mais aussi dans la Data Science. Grâce à son typage statique et à sa compatibilité avec JavaScript, il devient un outil pratique pour construire des modèles d'apprentissage automatique (ML) qui fonctionnent directement dans le navigateur ou sur le serveur (Node.js). Dans cet article, nous allons passer en revue les bibliothèques clés pour l'apprentissage automatique en TypeScript, leurs caractéristiques, des exemples de code et des scénarios d'utilisation.



1. TensorFlow.js — le framework principal pour le ML dans le navigateur



TensorFlow.js est un portage du framework populaire TensorFlow en JavaScript/TypeScript. Il permet d'exécuter l'entraînement et l'inférence de modèles à la fois dans le navigateur et dans Node.js. La bibliothèque prend en charge l'accélération GPU via WebGL et WebGPU, ce qui offre un gain de performance.



Principales fonctionnalités :

  • Création de réseaux de neurones à l'aide d'une API de haut niveau (tf.sequential, tf.model).
  • Chargement de modèles pré-entraînés depuis TensorFlow Hub.
  • Conversion de modèles de la version Python de TensorFlow au format .json.
  • Travail avec des tenseurs, des optimiseurs et des couches.


Exemple : régression linéaire en TypeScript

import * as tf from '@tensorflow/tfjs';

// Données : relation 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]);

// Création du modèleconst model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));

// Compilationmodel.compile({optimizer: 'sgd', loss: 'meanSquaredError'});

// Entraînementmodel.fit(xs, ys, {epochs: 250}).then(() => { model.predict(tf.tensor2d([10], [1, 1])).print(); // Sortie : ~19 (proche de 2*10 - 1 = 19)});


2. ML5.js — une bibliothèque pour le ML créatif



ML5.js est construite au-dessus de TensorFlow.js et est conçue pour la simplicité d'utilisation. Elle fournit des modèles prêts à l'emploi pour la reconnaissance d'images, de sons, de textes et de gestes. Idéale pour les projets éducatifs et le prototypage.



Exemple : classification d'images

import * as ml5 from 'ml5';

// Chargement du modèle pré-entraîné MobileNetconst classifier = ml5.imageClassifier('MobileNet');

// Classification de l'imageconst img = document.getElementById('myImage') as HTMLImageElement;classifier.classify(img, (err: Error | null, results: any[]) => { if (err) console.error(err); else console.log('Résultat :', results[0].label);});


3. Brain.js — réseaux de neurones pour Node.js et le navigateur



Brain.js est une bibliothèque légère pour construire des réseaux de neurones en JavaScript/TypeScript. Elle prend en charge différentes architectures : LSTM, RNN, GRU. Idéale pour les tâches de prévision de séries temporelles et de traitement de texte.



Exemple : réseau de neurones simple pour 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 — une bibliothèque flexible sur le plan architectural



Synaptic permet de créer des réseaux de neurones de n'importe quelle architecture, y compris les perceptrons multicouches, les réseaux récurrents et les cartes auto-organisatrices de Kohonen. Elle ne nécessite pas de dépendances et fonctionne dans le navigateur.



Exemple : création d'un perceptron

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


5

Recommendations