TensorFlow.js در Node

CPU TensorFlow

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

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

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

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

GPU TensorFlow

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

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

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

سی پی یو وانیلی

نسخه TensorFlow.js در حال اجرا با عملیات CPU vanilla را می توان به صورت زیر وارد کرد:

import * as tf from '@tensorflow/tfjs'

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

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

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

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

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

API ها

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

tf.browser

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

در حال حاضر این موارد عبارتند از:

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

tf.node

دو بسته از Node.js همچنین یک فضای نام، ارائه tf.node ، که شامل رابط های برنامه کاربردی گره خاص است.

TensorBoard یک نمونه قابل توجه از API های ویژه Node.js است.

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