Cette page a été traduite par l'API Cloud Translation.
Switch to English

TensorFlow.js dans Node

Processeur TensorFlow

Le package CPU TensorFlow peut être importé comme suit:

import * as tf from '@tensorflow/tfjs-node'

Lors de l'importation de TensorFlow.js à partir de ce package, le module que vous obtenez sera accéléré par le binaire TensorFlow C et exécuté sur le processeur. TensorFlow sur le processeur utilise l'accélération matérielle pour accélérer le calcul d'algèbre linéaire sous le capot.

Ce package fonctionnera sur les plates-formes Linux, Windows et Mac sur lesquelles TensorFlow est pris en charge.

GPU TensorFlow

Le package GPU TensorFlow peut être importé comme suit:

import * as tf from '@tensorflow/tfjs-node-gpu'

Comme le package CPU, le module que vous obtenez sera accéléré par le binaire TensorFlow C, mais il exécutera des opérations de tenseurs sur le GPU avec CUDA et donc uniquement sous Linux. Cette liaison peut être au moins un ordre de grandeur plus rapide que les autres options de liaison.

CPU vanille

La version de TensorFlow.js exécutée avec des opérations CPU vanilla peut être importée comme suit:

import * as tf from '@tensorflow/tfjs'

Ce package est le même que celui que vous utiliseriez dans le navigateur. Dans ce package, les opérations sont exécutées en JavaScript vanilla sur le processeur. Ce paquet est beaucoup plus petit que les autres car il n'a pas besoin du binaire TensorFlow, mais il est beaucoup plus lent.

Étant donné que ce package ne repose pas sur TensorFlow, il peut être utilisé dans plus d'appareils prenant en charge Node.js que Linux, Windows et Mac.

Considérations de production

Les liaisons Node.js fournissent un backend pour TensorFlow.js qui implémente les opérations de manière synchrone. Cela signifie que lorsque vous appelez une opération, par exemple tf.matMul(a, b) , cela bloquera le thread principal jusqu'à ce que l'opération soit terminée.

Pour cette raison, les liaisons sont actuellement bien adaptées aux scripts et aux tâches hors ligne. Si vous souhaitez utiliser les liaisons Node.js dans une application de production, comme un serveur Web, vous devez configurer une file d'attente de travaux ou configurer des threads de travail afin que votre code TensorFlow.js ne bloque pas le thread principal.

Apis

Une fois que vous avez importé le package en tant que tf dans l'une des options ci-dessus, tous les symboles normaux TensorFlow.js apparaîtront sur le module importé.

tf.browser

Dans le package TensorFlow.js normal, les symboles de l'espace de noms tf.browser.* Ne seront pas utilisables dans Node.js car ils utilisent des API spécifiques au navigateur.

Actuellement, ce sont:

  • tf.browser.fromPixels
  • tf.browser.toPixels

tf.node

Les deux packages Node.js fournissent également un espace de noms, tf.node , qui contient des API spécifiques aux nœuds.

TensorBoard est un exemple notable d'API spécifiques à Node.js.

Un exemple d'exportation de résumés vers TensorBoard dans Node.js:

const model = tf.sequential();
model.add(tf.layers.dense({ units: 1, inputShape: [200] }));
model.compile({
  loss: 'meanSquaredError',
  optimizer: 'sgd',
  metrics: ['MAE']
});


// Generate some random fake data for demo purpose.
const xs = tf.randomUniform([10000, 200]);
const ys = tf.randomUniform([10000, 1]);
const valXs = tf.randomUniform([1000, 200]);
const valYs = tf.randomUniform([1000, 1]);


// Start model training process.
async function train() {
  await model.fit(xs, ys, {
    epochs: 100,
    validationData: [valXs, valYs],
    // Add the tensorBoard callback here.
    callbacks: tf.node.tensorBoard('/tmp/fit_logs_1')
  });
}
train();