مقدمه‌ای بر TensorFlow.js - یادگیری ماشین در جاوااسکریپت

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 10 تیر 1397
دسته بندی ها : جاوا اسکریپت

در یکی از نوشته‌های وبسایت راکت شما را با «۱۵ کتابخانه کاربردی جاوااسکریپت و CSS» آشنا کردیم. در این بین یکی از موارد جذاب و هیجان‌انگیز TensorFlow.js نام داشت. امروز قصد داریم به صورت اختصاصی در یک مطلب مستقل راجع به این کتابخانه جاوااسکریپتی صحبت کنیم.

TensorFlow.js یک کتابخانه متن باز است که برای تعریف، آموزش و اجرای ماژول‌های یادگیری ماشین به صورت کامل روی مرورگر استفاده می‌شود. در این کتابخانه از جاوااسکریپت و لایه‌های سطح بالای API استفاده شده است. اگر شما در حال حاضر یک توسعه‌دهنده جاوااسکریپت هستید که قصد وارد شدن به دنیای یادگیری ماشین را دارید TensorFlow.js بهترین فرصت برای شماست. در این پست شما را به سرعت با مقدمه‌ای از TensorFlow.js آشنا می‌کنیم و منابع لازم برای شروع کار با آن را بررسی می‌نماییم.

یادگیری ماشین در مرورگر

اجرای برنامه‌های یادگیری ماشین به صورت کامل در قسمت مشتری و روی مرورگر، فرصت جدیدی را برای خلاقیت شما ایجاد کرده است. برای این موضوع می‌توانید در این لینک مثال‌هایی از دنیای واقعی را مشاهده کنید.

یادگیری ماشین در جاوااسکریپت

یک مثال جذاب دیگر از دنیای یادگیری ماشین با استفاده از TensorFlow می‌تواند Emoji Scavenger Hunt باشد. با استفاده از این نمونه شما می‌توانید از یک شبکه عصبی در تلفن هوشمندتان بهره بگیرید.

یادگیری ماشین در جاوااسکریپت

یادگیری ماشین در مرورگر یعنی اینکه همه چیز از طرف و دید کاربران استفاده می‌شود و هیچ نیازی به نصب کتابخانه روی سرور نخواهد بود. تنها کافی است که یک صفحه وب را باز کرده و برنامه‌تان آماده اجرا است. این کتابخانه از WebGL نیز پشتیبانی می‌کند، بنابراین وقتی GPU آماده باشد، روند کدهای شما تسریع پیدا می‌کند. کاربران ممکن است صفحه وب شما را از طریق موبایل‌های‌شان باز کنند، در این حالت برنامه قابلیت استفاده از داده‌های سنسور شما را خواهد داشت. جدای از تمام این موارد باید مجددا اشاره کنم که تمام این موارد روی مرورگر و برای مشتری اجرا می‌شود بنابراین خطرات امنیتی کمتری شما را تهدید می‌کند و برای سناریوهایی که نیاز به سرعت بیشتری دارید این مورد بسیار مناسب است. 

چکاری را می‌توانید با استفاده از TensorFlow.js انجام دهید؟

اگر در حال حاضر مشغول توسعه اپلیکیشن‌ با استفاده از TensorFlow.js هستید باید بگویم که سه روند کاری وجود دارد که می‌توانید از آن‌ها بهره بگیرید:

  • شما می‌توانید یک مدل موجود و یا از پیش آموزش داده شده را وارد روند کاری‌تان کنید. اگر قبلا یک مدل آموزش یافته از TensorFlow و یا Keras را داشته باشید حال می‌توانید آن را به قالب TensorFlow.js در بیاورید و آن را در مرورگر اجرا نمایید.
  • شما می‌توانید یک مدل را دوباره آموزش دهید. در این حالت می‌توانید با استفاده از تکنیک Image Retraining یک مدل از پیش ساخته شده را دوباره آموزش دهید. از این طریق با مقداری از داده‌ها می‌توانید به صورت سریع مدل‌تان را آموزش دهید.
  • ایجاد یک مدل از پایه در مرورگر‌تان. در کنار این موارد می‌توانید با استفاده از TensorFlow.js یک مدل جدید یادگیری ماشین را تعریف، آموزش و اجرا کنید. تمام این کارها از طریق مرورگر و با استفاده از جاوااسکریپت و APIهای سطح بالا انجام می‌شود. اگر با Keras آشنایی داشته باشید مطمئنا با APIهای سطح بالا نیز آشنایی خواهید داشت.

بیایید قطعه کدهایی از این فریمورک را مشاهده کنیم

در این مثال ما قصد داری که یک مدل از یادگیری ماشین را با استفاده از پشته‌ای از لایه‌ها ایجاد کنیم.

import * as tf from ‘@tensorflow/tfjs’;
const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [4], units: 100}));
model.add(tf.layers.dense({units: 4}));
model.compile({loss: ‘categoricalCrossentropy’, optimizer: ‘sgd’});

لایه‌های API که ما در اینجا استفاده کرده‌ایم تمام لایه‌های مربوط به Keras را نیز پشتیبانی می‌کند. ما می‌توانیم مدل‌مان را با همان APIهای سازگار با Keras توسعه دهیم:

await model.fit(
  xData, yData, {
    batchSize: batchSize,
    epochs: epochs
});

مدل ما در حال حاضر آماده کار کردن است و می‌تواند تصمیمی بگیرد:

const inputData = tf.tensor2d([[4.8, 3.0, 1.4, 0.1]], [1, 4]);

const result = model.predict(inputData);
const winner = irisClasses[result.argMax().dataSync()[0]];

console.log(winner);

TensorFlow.js همچنین حاوی APIهای سطح پایین نیز است که از Eager execution پشتیبانی می‌کند. 

یادگیری ماشین در جاوااسکریپت

چه ارتباطی در بین TensorFlow.js و deeplearn.js وجود دارد؟

سوال خوبی‌ست! TensorFlow.js یک اکوسیستم جاوااسکریپتی برای یادگیری ماشین است و در حال حاضر در حال تبدیل شدن به جایگزین deeplearn.js با نام TensorFlow.js Core است. 

این فریمورک همچنین حاوی لایه‌هایی از API است که برای ایجاد یادگیری ماشین کتابخانه‌ای سطح بالاتر در نظر گرفته می‌شود. برای اطلاعات بیشتر در زمینه سوالات می‌توانید به این FAQ مراجعه کنید. 

در حال حاضر بهترین مکان برای یافتن آموزش‌های TensorFlow.js کجاست؟

اگر قصد یادگیری و مطالعه بیشتر در زمینه TensorFlow.js را دارید بهتر است که به صفحه اصلی وبسایت این پروژه مراجعه کنید. در آن‌جا می‌توانید مثال‌ها و آموزش‌های مختلفی را مشاهده نمایید. 

منبع

این مطلب را با دیگران به اشتراک بگذارید :

مقالات پیشنهادی

10 نمونه از یادگیری ماشین در جاوااسکریپت

با گذشت سال‌ها کتابخانه‌های مربوط به یادگیری ماشین سریع‌تر و بیشتر قابل دسترس خواهند بود. هیچ نشانه‌ای از عقب ماندن وجود ندارد. با وجود آنکه پایتون به...

Laravel-Excel - تبدیل کردن ساده اطلاعات مدل به اکسل

امروز من می خوام به طور خلاصه بررسی اجمالی در مورد پکیج Laravel-Excel داشته باشم . به نظرم احتیاج به این نیست که در مورد این مطلب توضیح خاصی بدم چون ش...

بهبود بخشیدن به تو در تو نویسی شروط - نکات جاوا اسکریپت

در این پست قصد دارم یک نکته جاوا اسکریپتی برای بهبود تو در تو نویسی شروط در جاوا اسکریپت را به شما بگم تا در کد نویسی های بعدی از شروط در برنامه های خ...

لغتنامه سئو - واژه A

بهینه سازی وب سایت یا سئو شامل یکسری اصطلاحات پرکاربرد و مهم میباشد. متاسفانه تفاسیر موجود از اصطلاحات سئو حتی در برخی از وبسایت های مطرح کشور عزیزمان...