TensorFlow.js di Node

CPU TensorFlow

Paket CPU TensorFlow dapat diimpor sebagai berikut:

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

Saat mengimpor TensorFlow.js dari paket ini, modul yang Anda dapatkan akan dipercepat oleh biner TensorFlow C dan dijalankan di CPU. TensorFlow pada CPU menggunakan akselerasi perangkat keras untuk mempercepat komputasi aljabar linier di bawah tenda.

Paket ini akan berfungsi pada platform Linux, Windows, dan Mac yang didukung TensorFlow.

GPU TensorFlow

Paket GPU TensorFlow dapat diimpor sebagai berikut:

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

Seperti paket CPU, modul yang Anda dapatkan akan dipercepat oleh biner TensorFlow C, namun akan menjalankan operasi tensor pada GPU dengan CUDA dan dengan demikian hanya linux. Pengikatan ini setidaknya bisa menjadi urutan besarnya lebih cepat daripada opsi pengikatan lainnya.

CPU Vanila

Versi TensorFlow.js yang berjalan dengan operasi CPU vanilla dapat diimpor sebagai berikut:

import * as tf from '@tensorflow/tfjs'

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

Karena paket ini tidak bergantung pada TensorFlow, paket ini dapat digunakan di lebih banyak perangkat yang mendukung Node.js daripada hanya Linux, Windows, dan Mac.

Pertimbangan produksi

Binding Node.js menyediakan backend untuk TensorFlow.js yang mengimplementasikan operasi secara sinkron. Itu berarti ketika Anda menelepon operasi, misalnya tf.matMul(a, b) , akan memblokir thread utama sampai operasi selesai.

Untuk alasan ini, binding saat ini sangat cocok untuk skrip dan tugas offline. Jika Anda ingin menggunakan binding Node.js dalam aplikasi produksi, seperti server web, Anda harus menyiapkan antrean pekerjaan atau menyiapkan utas pekerja sehingga kode TensorFlow.js Anda tidak akan memblokir utas utama.

Lebah

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

tf.browser

Dalam paket TensorFlow.js normal, simbol-simbol di tf.browser.* Namespace akan tidak dapat digunakan di Node.js karena mereka menggunakan API browser tertentu.

Saat ini, ini adalah:

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

tf.node

Dua paket Node.js juga menyediakan namespace, tf.node , yang mengandung API simpul-spesifik.

TensorBoard adalah contoh penting dari API khusus Node.js.

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