TensorFlow.js in Node

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

CPU TensorFlow

Il pacchetto CPU TensorFlow può essere importato come segue:

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

Quando si importa TensorFlow.js da questo pacchetto, il modulo che si ottiene verrà accelerato dal binario TensorFlow C ed eseguito sulla CPU. TensorFlow sulla CPU utilizza l'accelerazione hardware per accelerare il calcolo dell'algebra lineare sotto il cofano.

Questo pacchetto funzionerà su piattaforme Linux, Windows e Mac in cui è supportato TensorFlow.

GPU TensorFlow

Il pacchetto GPU TensorFlow può essere importato come segue:

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

Come il pacchetto CPU, il modulo che ottieni sarà accelerato dal binario TensorFlow C, tuttavia eseguirà operazioni di tensore sulla GPU con CUDA e quindi solo Linux. Questa associazione può essere almeno un ordine di grandezza più veloce delle altre opzioni di associazione.

CPU alla vaniglia

La versione di TensorFlow.js in esecuzione con operazioni della CPU vanilla può essere importata come segue:

import * as tf from '@tensorflow/tfjs'

Questo pacchetto è lo stesso di quello che useresti nel browser. In questo pacchetto, le operazioni vengono eseguite in JavaScript vanilla sulla CPU. Questo pacchetto è molto più piccolo degli altri perché non necessita del binario TensorFlow, tuttavia è molto più lento.

Poiché questo pacchetto non si basa su TensorFlow, può essere utilizzato in più dispositivi che supportano Node.js oltre a Linux, Windows e Mac.

Considerazioni sulla produzione

I collegamenti Node.js forniscono un back-end per TensorFlow.js che implementa le operazioni in modo sincrono. Ciò significa che quando chiami un'operazione, ad esempio tf.matMul(a, b) , bloccherà il thread principale fino al completamento dell'operazione.

Per questo motivo, le associazioni attualmente sono adatte per script e attività offline. Se desideri utilizzare i collegamenti Node.js in un'applicazione di produzione, come un server Web, devi impostare una coda di lavoro o impostare thread di lavoro in modo che il codice TensorFlow.js non blocchi il thread principale.

API

Dopo aver importato il pacchetto come tf in una delle opzioni precedenti, tutti i normali simboli TensorFlow.js appariranno sul modulo importato.

tf.browser

Nel normale pacchetto TensorFlow.js, i simboli nello spazio dei nomi tf.browser.* non saranno utilizzabili in Node.js poiché utilizzano API specifiche del browser.

Attualmente, questi sono:

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

tf.node

I due pacchetti Node.js forniscono anche uno spazio dei nomi, tf.node , che contiene API specifiche del nodo.

TensorBoard è un notevole esempio di API specifiche per Node.js.

Un esempio di esportazione di riepiloghi su TensorBoard in 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();