Node.js'de TensorFlow.js

Bu kılavuzda Node.js için kullanılabilen TensorFlow.js paketleri ve API'ler açıklanmaktadır.

TensorFlow.js'yi Node.js'ye nasıl yükleyeceğinizi öğrenmek için kurulum eğitimine bakın. Kurulum ve destek hakkında ek bilgi için Node.js deposu için TensorFlow.js'ye bakın.

TensorFlow CPU

TensorFlow CPU paketi aşağıdaki şekilde içe aktarılabilir:

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

TensorFlow.js'yi bu paketten içe aktardığınızda, TensorFlow C ikili dosyası tarafından hızlandırılan ve CPU üzerinde çalışan bir modül elde edersiniz. CPU üzerindeki TensorFlow, doğrusal cebir hesaplamasını optimize etmek için donanım hızlandırmayı kullanır.

Bu paket, TensorFlow'un desteklendiği Linux, Windows ve macOS platformlarında çalışır.

TensorFlow GPU'su

TensorFlow GPU paketi aşağıdaki şekilde içe aktarılabilir:

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

CPU paketi gibi modül de TensorFlow C ikili programı tarafından hızlandırılır. Ancak GPU paketi, CUDA ile GPU üzerinde tensör işlemlerini çalıştırır, dolayısıyla yalnızca Linux'ta kullanılabilir. Bu bağlama, diğer bağlama seçeneklerinden en azından bir kat daha hızlı olabilir.

Saf JavaScript için TensorFlow

TensorFlow.js'nin CPU'da saf JavaScript çalıştıran bir sürümü de vardır. Aşağıdaki gibi içe aktarılabilir:

import * as tf from '@tensorflow/tfjs'

Bu paket, tarayıcıda kullanacağınız paketle aynıdır. Bu pakette işlemler CPU üzerinde vanilya JavaScript'te çalıştırılır. Bu paket diğerlerinden çok daha küçüktür çünkü TensorFlow ikili dosyasına ihtiyaç duymaz ancak aynı zamanda çok daha yavaştır.

Bu paket TensorFlow'a dayanmadığı için Node.js'yi destekleyen daha fazla cihazda kullanılabilir. TensorFlow'u destekleyen Linux, Windows ve macOS platformlarıyla sınırlı değildir.

Üretim hususları

Node.js bağlamaları, TensorFlow.js için işlemleri eşzamanlı olarak uygulayan bir arka uç sağlar. Bu, örneğin tf.matMul(a, b) gibi bir işlemi çağırdığınızda, işlem tamamlanana kadar ana iş parçacığının engelleneceği anlamına gelir.

Bu nedenle bağlamalar komut dosyaları ve çevrimdışı görevler için çok uygundur. Node.js bağlamalarını web sunucusu gibi bir üretim uygulamasında kullanmak istiyorsanız, TensorFlow.js kodunuzun ana iş parçacığını engellememesi için bir iş kuyruğu oluşturmalı veya çalışan iş parçacıklarını ayarlamanız gerekir.

API'ler

Yukarıdaki seçeneklerden herhangi birini kullanarak paketi tf olarak içe aktardığınızda, içe aktarılan modülde normal TensorFlow.js sembollerinin tümü görünür.

tf.tarayıcı

tf.browser.* ad alanındaki API'ler, tarayıcıya özgü API'lere bağımlı olduklarından Node.js'de kullanılamaz. tf.browser API'lerinin listesi için bkz. Tarayıcı .

tf.node

İki Node.js paketi ayrıca Node.js'ye özgü API'leri (örneğin TensorBoard) içeren tf.node ad alanını da sağlar.

Özetleri Node.js'de TensorBoard'a aktarmanın bir örneğini burada bulabilirsiniz:

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