TensorFlow.js در Node.js

این راهنما بسته‌های TensorFlow.js و APIهای موجود برای Node.js را شرح می‌دهد.

برای یادگیری نحوه نصب TensorFlow.js در Node.js، به آموزش نصب مراجعه کنید. برای اطلاعات بیشتر در مورد نصب و پشتیبانی، به مخزن TensorFlow.js برای Node.js مراجعه کنید.

CPU TensorFlow

بسته CPU TensorFlow را می توان به صورت زیر وارد کرد:

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

وقتی TensorFlow.js را از این بسته وارد می‌کنید، ماژولی دریافت می‌کنید که توسط باینری TensorFlow C شتاب می‌گیرد و روی CPU اجرا می‌شود. TensorFlow در CPU از شتاب سخت افزاری برای بهینه سازی محاسبات جبر خطی استفاده می کند.

این بسته روی پلتفرم‌های لینوکس، ویندوز و macOS که TensorFlow پشتیبانی می‌شود، کار می‌کند.

GPU TensorFlow

بسته GPU TensorFlow را می توان به صورت زیر وارد کرد:

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

مانند بسته CPU، ماژول توسط باینری TensorFlow C شتاب می گیرد. اما بسته GPU عملیات تانسور را روی GPU با CUDA اجرا می کند، بنابراین فقط در لینوکس در دسترس است. این اتصال می تواند حداقل یک مرتبه بزرگتر از سایر گزینه های اتصال باشد.

TensorFlow برای جاوا اسکریپت خالص

همچنین نسخه‌ای از TensorFlow.js وجود دارد که جاوا اسکریپت خالص را روی CPU اجرا می‌کند. می توان آن را به صورت زیر وارد کرد:

import * as tf from '@tensorflow/tfjs'

این بسته همان بسته ای است که شما در مرورگر استفاده می کنید. در این پکیج عملیات به صورت وانیلی جاوا اسکریپت روی CPU اجرا می شود. این بسته بسیار کوچکتر از سایرین است زیرا به باینری TensorFlow نیاز ندارد، اما سرعت آن نیز بسیار کندتر است.

از آنجایی که این بسته به TensorFlow متکی نیست، می توان از آن در دستگاه های بیشتری که Node.js را پشتیبانی می کنند استفاده کرد. این به پلتفرم های لینوکس، ویندوز و macOS که از TensorFlow پشتیبانی می کنند محدود نمی شود.

ملاحظات تولید

اتصالات Node.js یک Backend برای TensorFlow.js فراهم می کند که عملیات را به صورت همزمان اجرا می کند. این بدان معنی است که، برای مثال، هنگامی که شما عملیاتی مانند tf.matMul(a, b) را فراخوانی می کنید، تا زمانی که عملیات به پایان برسد، موضوع اصلی مسدود می شود.

به همین دلیل، اتصالات برای اسکریپت ها و کارهای آفلاین مناسب هستند. اگر می‌خواهید از پیوندهای Node.js در یک برنامه تولیدی مانند سرور وب استفاده کنید، باید یک صف شغلی راه‌اندازی کنید یا رشته‌های کارگری را راه‌اندازی کنید تا کد TensorFlow.js شما رشته اصلی را مسدود نکند.

API ها

هنگامی که بسته را به عنوان tf با استفاده از هر یک از گزینه های بالا وارد می کنید، همه نمادهای TensorFlow.js معمولی در ماژول وارد شده ظاهر می شوند.

tf.browser

APIهای موجود در فضای نام tf.browser.* در Node.js قابل استفاده نیستند زیرا به APIهای خاص مرورگر وابسته هستند. برای فهرستی از APIهای tf.browser ، مرورگر را ببینید.

tf.node

دو بسته Node.js همچنین یک فضای نام به tf.node ارائه می‌کنند که حاوی APIهای ویژه Node.js (مثلاً TensorBoard) است.

در اینجا نمونه ای از صادرات خلاصه به TensorBoard در 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();