TensorFlow.js di Node.js

Panduan ini menjelaskan paket TensorFlow.js dan API yang tersedia untuk Node.js.

Untuk mempelajari cara menginstal TensorFlow.js di Node.js, lihat tutorial penyiapan . Untuk informasi tambahan tentang instalasi dan dukungan, lihat repositori TensorFlow.js untuk Node.js.

CPU TensorFlow

Paket CPU TensorFlow dapat diimpor sebagai berikut:

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

Saat mengimpor TensorFlow.js dari paket ini, Anda mendapatkan modul yang dipercepat oleh biner TensorFlow C dan berjalan di CPU. TensorFlow pada CPU menggunakan akselerasi perangkat keras untuk mengoptimalkan komputasi aljabar linier.

Paket ini berfungsi di platform Linux, Windows, dan macOS yang mendukung TensorFlow.

GPU TensorFlow

Paket GPU TensorFlow dapat diimpor sebagai berikut:

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

Seperti paket CPU, modul ini dipercepat oleh biner TensorFlow C. Namun paket GPU menjalankan operasi tensor pada GPU dengan CUDA, sehingga hanya tersedia di Linux. Pengikatan ini setidaknya bisa lebih cepat dibandingkan opsi pengikatan lainnya.

TensorFlow untuk JavaScript murni

Ada juga versi TensorFlow.js yang menjalankan JavaScript murni di CPU. Itu dapat diimpor sebagai berikut:

import * as tf from '@tensorflow/tfjs'

Paket ini adalah paket yang sama yang Anda gunakan di browser. Dalam paket ini, operasi dijalankan dalam JavaScript vanilla pada CPU. Paket ini jauh lebih kecil dibandingkan paket lainnya karena tidak memerlukan biner TensorFlow, namun juga jauh lebih lambat.

Karena paket ini tidak bergantung pada TensorFlow, paket ini dapat digunakan di lebih banyak perangkat yang mendukung Node.js. Ini tidak terbatas pada platform Linux, Windows, dan macOS yang mendukung TensorFlow.

Pertimbangan produksi

Binding Node.js menyediakan backend untuk TensorFlow.js yang mengimplementasikan operasi secara sinkron. Artinya, misalnya, saat Anda memanggil operasi seperti tf.matMul(a, b) , thread utama akan diblokir hingga operasi selesai.

Karena alasan ini, pengikatannya sangat cocok untuk skrip dan tugas offline. Jika Anda ingin menggunakan binding Node.js dalam aplikasi produksi seperti server web, Anda harus menyiapkan antrean tugas atau menyiapkan thread pekerja agar kode TensorFlow.js Anda tidak memblokir thread utama.

Lebah

Saat Anda mengimpor paket sebagai tf menggunakan salah satu opsi di atas, semua simbol TensorFlow.js normal akan muncul di modul yang diimpor.

tf.browser

API di namespace tf.browser.* tidak dapat digunakan di Node.js karena bergantung pada API khusus browser. Untuk daftar API tf.browser , lihat Browser .

tf.node

Kedua paket Node.js juga menyediakan namespace, tf.node , yang berisi API khusus Node.js (misalnya, TensorBoard).

Berikut ini contoh mengekspor ringkasan ke TensorBoard di 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();