Apprentissage automatique en JavaScript : bibliothèques pour Node.js

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 JavaScript : bibliothèques pour Node.js



Bien que Python reste le langage dominant dans le domaine de l'apprentissage automatique, l'écosystème JavaScript (en particulier Node.js) se développe activement et propose des outils puissants pour le ML. L'utilisation de JavaScript permet de créer des solutions ML qui s'intègrent facilement aux applications web, fonctionnent en temps réel sur le serveur ou même dans le navigateur. Si votre projet utilise déjà Node.js, l'intégration de bibliothèques d'apprentissage automatique peut être plus naturelle que de passer à Python.



Dans cet article, nous examinerons les bibliothèques clés pour l'apprentissage automatique en JavaScript (Node.js), leurs caractéristiques et des exemples d'utilisation.



1. TensorFlow.js



TensorFlow.js est la bibliothèque la plus puissante et la plus populaire pour l'apprentissage automatique en JavaScript, portée depuis TensorFlow original. Elle prend en charge l'exécution de modèles à la fois dans le navigateur et dans Node.js, en utilisant l'accélération matérielle via CUDA ou WebGL.



Principales fonctionnalités :

  • Exécution de modèles pré-entraînés (MobileNet, BERT, YOLO).
  • Entraînement de réseaux de neurones à partir de zéro.
  • Apprentissage par transfert (réglage fin des modèles existants).
  • Prise en charge du GPU via CUDA sur Node.js.
  • Conversion de modèles depuis Python TensorFlow (format TFJS).


Exemple : régression linéaire avec TensorFlow.js

const tf = require('@tensorflow/tfjs-node');

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

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

// Entraînementmodel.fit(xs, ys, {epochs: 200}).then(() => { // Prédiction pour x = 5 model.predict(tf.tensor2d([5], [1, 1])).print();});


2. Brain.js



Brain.js est une bibliothèque simple et intuitive pour les réseaux de neurones. Elle convient parfaitement aux débutants et aux petits projets. Elle prend en charge les perceptrons multicouches (MLP), les réseaux récurrents (RNN) et les réseaux à mémoire à long et court terme (LSTM).



Principales fonctionnalités :

  • Seuil d'entrée minimal — API en quelques lignes.
  • Prise en charge de l'apprentissage asynchrone pour éviter le blocage.
  • Sauvegarde et chargement de modèles entraînés en JSON.
  • Fonctionne à la fois dans Node.js et dans le navigateur.


Exemple : XOR avec Brain.js

const brain = require('brain.js');

const net = new brain.NeuralNetwork();

// Données d'entraînement pour XORnet.train([ {input: [0, 0], output: [0]}, {input: [0, 1], output: [1]}, {input: [1, 0], output: [1]}, {input: [1, 1], output: [0]}]);

// Testconst output = net.run([1, 0]); // ~0.99console.log(output);


3. Synaptic



Synaptic est une bibliothèque indépendante de l'architecture pour les réseaux de neurones. Elle permet de construire pratiquement tous les types de réseaux : perceptrons, réseaux multicouches, réseaux à mémoire (LSTM), réseaux de Hopfield et autres. La bibliothèque n'a pas de dépendances externes.



Principales fonctionnalités :

  • Flexibilité dans la construction d'architectures.
  • Prise en charge de divers algorithmes d'apprentissage (SGD, Momentum, Nesterov).
  • Visualiseur de réseau (dans le navigateur).
  • Prise en charge de la sauvegarde/chargement de modèles.


Exemple : réseau de neurones simple avec 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

Recommendations