Ayuda a proteger la Gran Barrera de Coral con TensorFlow en Kaggle Únete Challenge

TensorFlow.js en Node

CPU de TensorFlow

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

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

Al importar TensorFlow.js desde este paquete, el módulo que obtienes será acelerado por el binario de TensorFlow C y se ejecutará en la CPU. TensorFlow en la CPU usa aceleración de hardware para acelerar el cálculo de álgebra lineal bajo el capó.

Este paquete funcionará en plataformas Linux, Windows y Mac donde se admita 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 CPU, el módulo que obtienes será acelerado por el binario de TensorFlow C, sin embargo, ejecutará operaciones de tensor en la GPU con CUDA y, por lo tanto, solo con Linux. Este enlace puede ser al menos un orden de magnitud más rápido que las otras opciones de enlace.

CPU vainilla

La versión de TensorFlow.js que se ejecuta con operaciones de CPU estándar 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 vanilla en la CPU. Este paquete es mucho más pequeño que los demás porque no necesita el binario de TensorFlow, sin embargo, es mucho más lento.

Debido a que este paquete no depende de TensorFlow, se puede usar en más dispositivos que admiten Node.js además de Linux, Windows y Mac.

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 cuando usted llama una operación, por ejemplo tf.matMul(a, b) , bloqueará el hilo principal hasta que haya finalizado la operación.

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

API

Una vez que importe el paquete como tf en cualquiera de las opciones anteriores, todos los símbolos normales de TensorFlow.js aparecerán en el módulo importado.

tf.browser

En el paquete TensorFlow.js normal, los símbolos en la tf.browser.* Espacio de nombres no serán utilizables en Node.js, ya que utilizan las API de navegador específicos.

Actualmente, estos son:

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

tf.node

Los dos paquetes Node.js también proporcionan un espacio de nombres, tf.node , que contienen API nodo-específicos.

TensorBoard es un ejemplo notable de API específicas de Node.js.

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 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();