TensorFlow.js en Node.js

Esta guía describe los paquetes y las API de TensorFlow.js disponibles para Node.js.

Para obtener información sobre cómo instalar TensorFlow.js en Node.js, consulte el tutorial de configuración . Para obtener información adicional sobre la instalación y el soporte, consulte el repositorio de TensorFlow.js para Node.js.

CPU TensorFlow

El paquete de CPU de TensorFlow se puede importar de la siguiente manera:

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

Cuando importas TensorFlow.js desde este paquete, obtienes un módulo acelerado por el binario TensorFlow C y se ejecuta en la CPU. TensorFlow en la CPU usa aceleración de hardware para optimizar el cálculo de álgebra lineal.

Este paquete funciona en plataformas Linux, Windows y macOS donde se admite TensorFlow.

GPU TensorFlow

El paquete de GPU de TensorFlow se puede importar de la siguiente manera:

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

Al igual que el paquete de la CPU, el binario TensorFlow C acelera el módulo. Pero el paquete GPU ejecuta operaciones de tensor en la GPU con CUDA, por lo que solo está disponible en Linux. Este enlace puede ser al menos un orden de magnitud más rápido que las otras opciones de enlace.

TensorFlow para JavaScript puro

También hay una versión de TensorFlow.js que ejecuta JavaScript puro en la CPU. Se puede importar de la siguiente manera:

import * as tf from '@tensorflow/tfjs'

Este paquete es el mismo paquete que usaría en el navegador. En este paquete, las operaciones se ejecutan en JavaScript estándar en la CPU. Este paquete es mucho más pequeño que los demás porque no necesita el binario TensorFlow, pero también es mucho más lento.

Debido a que este paquete no depende de TensorFlow, se puede usar en más dispositivos compatibles con Node.js. No se limita a las plataformas Linux, Windows y macOS compatibles con TensorFlow.

Consideraciones de producción

Los enlaces de Node.js proporcionan un backend para TensorFlow.js que implementa operaciones de forma sincrónica. Esto significa que, por ejemplo, cuando llama a una operación como tf.matMul(a, b) , bloqueará el subproceso principal hasta que se complete la operación.

Por esta razón, los enlaces son adecuados para scripts y tareas fuera de línea. Si desea utilizar los enlaces de Node.js en una aplicación de producción como un servidor web, debe configurar una cola de trabajo o configurar subprocesos de trabajo para que su código TensorFlow.js no bloquee el subproceso principal.

API

Cuando importa el paquete como tf usando cualquiera de las opciones anteriores, todos los símbolos normales de TensorFlow.js aparecen en el módulo importado.

tf.navegador

Las API en el espacio de nombres tf.browser.* no se pueden usar en Node.js porque dependen de las API específicas del navegador. Para obtener una lista de las API tf.browser , consulte Navegador .

tf.nodo

Los dos paquetes de Node.js también proporcionan un espacio de nombres, tf.node , que contiene API específicas de Node.js (por ejemplo, TensorBoard).

Este es un ejemplo de exportación de resúmenes a TensorBoard en 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 purposes.
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();