W tym przewodniku opisano pakiety TensorFlow.js i interfejsy API dostępne dla Node.js.
Aby dowiedzieć się, jak zainstalować TensorFlow.js w Node.js, zapoznaj się z samouczkiem dotyczącym konfiguracji . Aby uzyskać dodatkowe informacje na temat instalacji i obsługi, zobacz repozytorium TensorFlow.js for Node.js .
Procesor TensorFlow
Pakiet procesora TensorFlow można zaimportować w następujący sposób:
import * as tf from '@tensorflow/tfjs-node'
Podczas importowania TensorFlow.js z tego pakietu otrzymujesz moduł, który jest przyspieszany przez plik binarny TensorFlow C i działa na CPU. TensorFlow na procesorze wykorzystuje akcelerację sprzętową do optymalizacji obliczeń algebry liniowej.
Ten pakiet działa na platformach Linux, Windows i macOS, na których obsługiwany jest TensorFlow.
GPU 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 z 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 uruchamia czysty JavaScript na procesorze. Można go zaimportować w następujący sposób:
import * as tf from '@tensorflow/tfjs'
Ten pakiet jest tym samym pakietem, którego używasz w przeglądarce. W tym pakiecie operacje są wykonywane w JavaScript na CPU. Ten pakiet jest znacznie mniejszy niż inne, 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ę do platform Linux, Windows i macOS, które obsługują 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 skonfigurować wątki robocze, aby kod TensorFlow.js nie blokował głównego wątku.
Pszczoła
Podczas importowania pakietu jako tf
przy użyciu dowolnej z powyższych opcji wszystkie normalne symbole TensorFlow.js pojawiają się w importowanym module.
tf.przeglądarka
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 uzyskać listę interfejsów API tf.browser
, zobacz Przeglądarka .
tf.węzeł
Dwa pakiety Node.js udostępniają również 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();