TensorFlow.js w Node.js

W tym przewodniku opisano pakiety i interfejsy API TensorFlow.js dostępne dla Node.js.

Aby dowiedzieć się, jak zainstalować TensorFlow.js w Node.js, zobacz samouczek instalacji . Aby uzyskać dodatkowe informacje na temat instalacji i wsparcia, zobacz repozytorium TensorFlow.js dla Node.js.

Procesor TensorFlow

Pakiet procesora TensorFlow można zaimportować w następujący sposób:

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

Kiedy importujesz TensorFlow.js z tego pakietu, otrzymasz moduł, który jest przyspieszany przez plik binarny TensorFlow C i działa na procesorze. TensorFlow na procesorze wykorzystuje przyspieszenie sprzętowe w celu optymalizacji obliczeń algebry liniowej.

Ten pakiet działa na platformach Linux, Windows i macOS, na których obsługiwany jest TensorFlow.

Procesor graficzny TensorFlow

Pakiet GPU TensorFlow można zaimportować w następujący sposób:

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

Podobnie jak pakiet procesora, moduł jest przyspieszany przez plik binarny TensorFlow C. Ale pakiet GPU uruchamia operacje tensorowe na GPU za pomocą CUDA, więc jest dostępny tylko w systemie Linux. To powiązanie może być co najmniej o rząd wielkości szybsze niż inne opcje powiązania.

TensorFlow dla czystego JavaScript

Istnieje również wersja TensorFlow.js, która obsługuje czysty JavaScript na procesorze. Można go importować w następujący sposób:

import * as tf from '@tensorflow/tfjs'

Ten pakiet jest tym samym pakietem, którego będziesz używać w przeglądarce. W tym pakiecie operacje są uruchamiane w waniliowym JavaScript na procesorze. Ten pakiet jest znacznie mniejszy od pozostałych, ponieważ nie potrzebuje pliku binarnego TensorFlow, ale jest też znacznie wolniejszy.

Ponieważ ten pakiet nie opiera się na TensorFlow, można go używać na większej liczbie urządzeń obsługujących Node.js. Nie ogranicza się to do platform Linux, Windows i macOS obsługujących TensorFlow.

Względy produkcyjne

Powiązania Node.js zapewniają zaplecze dla TensorFlow.js, które implementuje operacje synchronicznie. Oznacza to, że na przykład wywołanie operacji takiej jak tf.matMul(a, b) spowoduje zablokowanie głównego wątku do czasu zakończenia operacji.

Z tego powodu powiązania dobrze nadają się do skryptów i zadań offline. Jeśli chcesz używać powiązań Node.js w aplikacji produkcyjnej, takiej jak serwer WWW, powinieneś skonfigurować kolejkę zadań lub wątki robocze, aby kod TensorFlow.js nie blokował głównego wątku.

Pszczoła

Gdy zaimportujesz pakiet jako tf przy użyciu dowolnej z powyższych opcji, w zaimportowanym module pojawią się wszystkie normalne symbole TensorFlow.js.

przeglądarka tf

Interfejsów API w przestrzeni nazw tf.browser.* nie można używać w Node.js, ponieważ zależą one od interfejsów API specyficznych dla przeglądarki. Aby zapoznać się z listą interfejsów API tf.browser , zobacz Przeglądarka .

węzeł tf

Obydwa pakiety Node.js udostępniają także przestrzeń nazw tf.node , która zawiera interfejsy API specyficzne dla Node.js (na przykład TensorBoard).

Oto przykład eksportowania podsumowań do TensorBoard w 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();