TensorFlow.js सह तुमच्या वेब ॲप्लिकेशन्समध्ये मशीन लर्निंगची शक्ती अनलॉक करा. हे मार्गदर्शक सेटअपपासून डिप्लॉयमेंटपर्यंत सर्वकाही, प्रात्यक्षिक उदाहरणे आणि सर्वोत्तम पद्धतींसह कव्हर करते.
फ्रंटएंड मशीन लर्निंग: TensorFlow.js इंटिग्रेशनसाठी एक सर्वसमावेशक मार्गदर्शक
मशीन लर्निंग आता केवळ बॅकएंडपुरते मर्यादित राहिलेले नाही. TensorFlow.js या शक्तिशाली JavaScript लायब्ररीमुळे, तुम्ही आता थेट ब्राउझर किंवा Node.js वातावरणात मशीन लर्निंग मॉडेल्स चालवू शकता. यामुळे बुद्धिमान आणि इंटरॲक्टिव्ह वेब ॲप्लिकेशन्स तयार करण्यासाठी अनेक संधी उपलब्ध होतात.
TensorFlow.js सह फ्रंटएंड मशीन लर्निंग का?
फ्रंटएंडमध्ये मशीन लर्निंग इंटिग्रेट करण्याचे अनेक आकर्षक फायदे आहेत:
- कमी लेटन्सी: स्थानिक पातळीवर डेटावर प्रक्रिया केल्यामुळे, तुम्हाला अनुमानासाठी रिमोट सर्व्हरवर डेटा पाठवण्याची गरज नाहीशी होते, ज्यामुळे जलद प्रतिसाद वेळ आणि अधिक प्रतिसादात्मक वापरकर्ता अनुभव मिळतो. उदाहरणार्थ, इमेज रेकग्निशन किंवा सेंटिमेंट ॲनालिसिस त्वरित होऊ शकते.
- ऑफलाइन क्षमता: ब्राउझरमध्ये मॉडेल्स चालत असल्याने, तुमचे ॲप्लिकेशन इंटरनेट कनेक्शनशिवायही कार्य करू शकते. हे विशेषतः मोबाइल वेब ॲप्स आणि प्रोग्रेसिव्ह वेब ॲप्स (PWAs) साठी मौल्यवान आहे.
- गोपनीयता आणि सुरक्षितता: संवेदनशील डेटा वापरकर्त्याच्या डिव्हाइसवरच राहतो, ज्यामुळे गोपनीयतेत वाढ होते आणि डेटा उल्लंघनाचा धोका कमी होतो. वैयक्तिक माहिती, जसे की आरोग्यसेवा किंवा आर्थिक डेटा हाताळणाऱ्या ॲप्लिकेशन्ससाठी हे महत्त्वाचे आहे.
- खर्च-प्रभावीपणा: क्लायंट-साइडवर गणनेचा भार टाकल्यामुळे सर्व्हरचा खर्च लक्षणीयरीत्या कमी होऊ शकतो, विशेषतः मोठ्या वापरकर्ता वर्गाच्या ॲप्लिकेशन्ससाठी.
- उत्तम वापरकर्ता अनुभव: रिअल-टाइम फीडबॅक आणि वैयक्तिकृत अनुभव शक्य होतात, ज्यामुळे अधिक आकर्षक आणि इंटरॲक्टिव्ह ॲप्लिकेशन्स तयार होतात. लाइव्ह ट्रान्सलेशन टूल किंवा हँडरायटिंग रेकग्निशन फीचरची कल्पना करा.
TensorFlow.js सह सुरुवात करणे
कोडमध्ये जाण्यापूर्वी, चला तुमचे डेव्हलपमेंट एन्व्हायर्नमेंट सेट अप करूया.
इन्स्टॉलेशन
तुम्ही TensorFlow.js अनेक प्रकारे इन्स्टॉल करू शकता:
- CDN द्वारे: तुमच्या HTML फाइलमध्ये खालील स्क्रिप्ट टॅग समाविष्ट करा:
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@4.16.0/dist/tf.min.js"></script>
- npm द्वारे: npm किंवा yarn वापरून पॅकेज इन्स्टॉल करा:
npm install @tensorflow/tfjs
किंवाyarn add @tensorflow/tfjs
त्यानंतर, ते तुमच्या JavaScript फाइलमध्ये इम्पोर्ट करा:import * as tf from '@tensorflow/tfjs';
मूलभूत संकल्पना
TensorFlow.js हे टेन्सर्सच्या संकल्पनेवर आधारित आहे, जे डेटा दर्शवणारे मल्टी-डायमेंशनल ॲरे आहेत. येथे काही प्रमुख ऑपरेशन्स आहेत:
- टेन्सर्स तयार करणे: तुम्ही
tf.tensor()
वापरून JavaScript ॲरेमधून टेन्सर्स तयार करू शकता. - ऑपरेशन्स करणे: TensorFlow.js टेन्सर्स हाताळण्यासाठी गणितीय आणि लिनियर अल्जेब्रा ऑपरेशन्सची विस्तृत श्रेणी प्रदान करते, जसे की
tf.add()
,tf.mul()
,tf.matMul()
, आणि बरेच काही. - मेमरी व्यवस्थापन: TensorFlow.js WebGL बॅकएंड वापरते, ज्यासाठी काळजीपूर्वक मेमरी व्यवस्थापन आवश्यक आहे. वापरानंतर टेन्सर मेमरी मोकळी करण्यासाठी
tf.dispose()
किंवाtf.tidy()
वापरा.
उदाहरण: साधे लिनियर रिग्रेशन
चला एका साध्या लिनियर रिग्रेशनचे उदाहरण पाहूया:
// डेटा डिफाइन करा
const x = tf.tensor1d([1, 2, 3, 4, 5]);
const y = tf.tensor1d([2, 4, 6, 8, 10]);
// स्लोप (m) आणि इंटरसेप्ट (b) साठी व्हेरिएबल्स डिफाइन करा
const m = tf.variable(tf.scalar(Math.random()));
const b = tf.variable(tf.scalar(Math.random()));
// लिनियर रिग्रेशन मॉडेल डिफाइन करा
function predict(x) {
return x.mul(m).add(b);
}
// लॉस फंक्शन (मीन स्क्वेअर्ड एरर) डिफाइन करा
function loss(predictions, labels) {
return predictions.sub(labels).square().mean();
}
// ऑप्टिमायझर (स्टोकॅस्टिक ग्रेडियंट डिसेंट) डिफाइन करा
const learningRate = 0.01;
const optimizer = tf.train.sgd(learningRate);
// ट्रेनिंग लूप
async function train(iterations) {
for (let i = 0; i < iterations; i++) {
optimizer.minimize(() => loss(predict(x), y));
// प्रत्येक १० इटरेशन्सनंतर लॉस प्रिंट करा
if (i % 10 === 0) {
console.log(`Iteration ${i}: Loss = ${loss(predict(x), y).dataSync()[0]}`);
await tf.nextFrame(); // ब्राउझरला अपडेट करण्याची परवानगी द्या
}
}
}
// ट्रेनिंग रन करा
train(100).then(() => {
console.log(`Slope (m): ${m.dataSync()[0]}`);
console.log(`Intercept (b): ${b.dataSync()[0]}`);
});
पूर्व-प्रशिक्षित मॉडेल्स लोड करणे
TensorFlow.js तुम्हाला विविध स्त्रोतांकडून पूर्व-प्रशिक्षित मॉडेल्स लोड करण्याची परवानगी देते:
- TensorFlow Hub: पूर्व-प्रशिक्षित मॉडेल्सचा एक संग्रह, जो तुम्ही थेट तुमच्या TensorFlow.js ॲप्लिकेशन्समध्ये वापरू शकता.
- TensorFlow SavedModel: TensorFlow SavedModel फॉरमॅटमध्ये सेव्ह केलेले मॉडेल्स कन्व्हर्ट करून TensorFlow.js मध्ये लोड केले जाऊ शकतात.
- Keras मॉडेल्स: Keras मॉडेल्स थेट TensorFlow.js मध्ये लोड केले जाऊ शकतात.
- ONNX मॉडेल्स: ONNX फॉरमॅटमधील मॉडेल्स
tfjs-converter
टूल वापरून TensorFlow.js मध्ये कन्व्हर्ट केले जाऊ शकतात.
TensorFlow Hub वरून मॉडेल लोड करण्याचे उदाहरण:
import * as tf from '@tensorflow/tfjs';
async function loadModel() {
const model = await tf.loadGraphModel('https://tfhub.dev/google/tfjs-model/mobilenet_v2/1/default/1', { fromTFHub: true });
console.log('Model loaded successfully!');
return model;
}
loadModel().then(model => {
// Use the model for prediction
// Example: model.predict(tf.tensor(image));
});
TensorFlow.js चे व्यावहारिक उपयोग
TensorFlow.js अनेक रोमांचक ॲप्लिकेशन्ससाठी सक्षम करते:
इमेज रेकग्निशन (प्रतिमा ओळख)
ब्राउझरमध्ये थेट प्रतिमांमधील वस्तू, चेहरे आणि दृश्ये ओळखा. याचा उपयोग इमेज सर्च, व्हिडिओ स्ट्रीममधील ऑब्जेक्ट डिटेक्शन किंवा सुरक्षा ॲप्लिकेशन्ससाठी फेशियल रेकग्निशनसाठी केला जाऊ शकतो.
उदाहरण: वापरकर्त्यांनी अपलोड केलेल्या प्रतिमांचे वर्गीकरण करण्यासाठी TensorFlow Hub वरून पूर्व-प्रशिक्षित MobileNet मॉडेल इंटिग्रेट करा.
ऑब्जेक्ट डिटेक्शन (वस्तू ओळख)
एका प्रतिमेत किंवा व्हिडिओ फ्रेममध्ये अनेक वस्तू ओळखा आणि त्यांचे स्थान निश्चित करा. ॲप्लिकेशन्समध्ये स्वायत्त ड्रायव्हिंग, पाळत ठेवणारी प्रणाली आणि रिटेल ॲनालिटिक्स यांचा समावेश आहे.
उदाहरण: थेट वेबकॅम फीडमधील सामान्य वस्तू ओळखण्यासाठी COCO-SSD मॉडेल वापरा.
नॅचरल लँग्वेज प्रोसेसिंग (NLP)
मानवी भाषेवर प्रक्रिया करा आणि ती समजून घ्या. याचा उपयोग सेंटिमेंट ॲनालिसिस, टेक्स्ट क्लासिफिकेशन, मशीन ट्रान्सलेशन आणि चॅटबॉट डेव्हलपमेंटसाठी केला जाऊ शकतो.
उदाहरण: ग्राहकांच्या रिव्ह्यूजचे विश्लेषण करण्यासाठी आणि रिअल-टाइम फीडबॅक देण्यासाठी सेंटिमेंट ॲनालिसिस मॉडेल लागू करा.
पोज एस्टिमेशन (शरीरस्थिती अंदाज)
एका प्रतिमेत किंवा व्हिडिओमध्ये व्यक्ती किंवा वस्तूच्या पोजचा अंदाज लावा. ॲप्लिकेशन्समध्ये फिटनेस ट्रॅकिंग, मोशन कॅप्चर आणि इंटरॲक्टिव्ह गेमिंग यांचा समावेश आहे.
उदाहरण: शरीराच्या हालचालींचा मागोवा घेण्यासाठी आणि व्यायामाच्या वेळी रिअल-टाइम फीडबॅक देण्यासाठी PoseNet मॉडेल वापरा.
स्टाइल ट्रान्सफर
एका प्रतिमेची शैली दुसऱ्या प्रतिमेवर हस्तांतरित करा. याचा उपयोग कलात्मक प्रभाव निर्माण करण्यासाठी किंवा अद्वितीय व्हिज्युअल कंटेंट तयार करण्यासाठी केला जाऊ शकतो.
उदाहरण: व्हॅन गॉगच्या "स्टारी नाईट" ची शैली वापरकर्त्याच्या फोटोवर लागू करा.
TensorFlow.js परफॉर्मन्स ऑप्टिमाइझ करणे
ब्राउझरमध्ये मशीन लर्निंग मॉडेल्स चालवणे संगणकीय दृष्ट्या गहन असू शकते. परफॉर्मन्स ऑप्टिमाइझ करण्यासाठी येथे काही स्ट्रॅटेजीज आहेत:
- योग्य मॉडेल निवडा: मोबाइल डिव्हाइस आणि ब्राउझर वातावरणासाठी ऑप्टिमाइझ केलेले हलके मॉडेल निवडा. MobileNet आणि SqueezeNet हे चांगले पर्याय आहेत.
- मॉडेलचा आकार ऑप्टिमाइझ करा: अचूकतेवर लक्षणीय परिणाम न करता मॉडेलचा आकार कमी करण्यासाठी क्वांटायझेशन आणि प्रूनिंग सारख्या तंत्रांचा वापर करा.
- हार्डवेअर ॲक्सेलरेशन: हार्डवेअर ॲक्सेलरेशनसाठी WebGL आणि WebAssembly (WASM) बॅकएंडचा लाभ घ्या. वापरकर्त्यांकडे सुसंगत ब्राउझर आणि हार्डवेअर असल्याची खात्री करा.
tf.setBackend('webgl');
किंवाtf.setBackend('wasm');
वापरून विविध बॅकएंडसह प्रयोग करा. - टेन्सर मेमरी व्यवस्थापन: मेमरी लीक टाळण्यासाठी वापरानंतर टेन्सर्स डिस्पोज करा. फंक्शनमधील टेन्सर्स आपोआप डिस्पोज करण्यासाठी
tf.tidy()
वापरा. - ॲसिंक्रोनस ऑपरेशन्स: मुख्य थ्रेड ब्लॉक करणे टाळण्यासाठी आणि एक सुरळीत वापरकर्ता अनुभव सुनिश्चित करण्यासाठी ॲसिंक्रोनस फंक्शन्स (
async/await
) वापरा. - वेब वर्कर्स: मुख्य थ्रेड ब्लॉक करणे टाळण्यासाठी संगणकीय दृष्ट्या गहन कार्ये वेब वर्कर्सकडे हलवा.
- इमेज प्रीप्रोसेसिंग: गणनेचा वेळ कमी करण्यासाठी इमेज प्रीप्रोसेसिंग पायऱ्या, जसे की रिसायझिंग आणि नॉर्मलायझेशन, ऑप्टिमाइझ करा.
डिप्लॉयमेंट स्ट्रॅटेजीज (उपयोजन धोरणे)
एकदा तुम्ही तुमचे TensorFlow.js ॲप्लिकेशन विकसित केल्यावर, तुम्हाला ते तैनात करणे आवश्यक आहे. येथे काही सामान्य उपयोजन पर्याय आहेत:
- स्टॅटिक होस्टिंग: तुमचे ॲप्लिकेशन Netlify, Vercel, किंवा Firebase Hosting सारख्या स्टॅटिक होस्टिंग सेवेवर तैनात करा. ज्या साध्या ॲप्लिकेशन्सना बॅकएंड सर्व्हरची आवश्यकता नाही त्यांच्यासाठी हे योग्य आहे.
- सर्व्हर-साइड रेंडरिंग (SSR): तुमचे ॲप्लिकेशन सर्व्हर-साइडवर रेंडर करण्यासाठी Next.js किंवा Nuxt.js सारखे फ्रेमवर्क वापरा. यामुळे SEO आणि सुरुवातीचा लोड टाइम सुधारू शकतो.
- प्रोग्रेसिव्ह वेब ॲप्स (PWAs): एक PWA तयार करा जे वापरकर्त्यांच्या डिव्हाइसवर इन्स्टॉल केले जाऊ शकते आणि ऑफलाइन कार्य करू शकते.
- इलेक्ट्रॉन ॲप्स: तुमचे ॲप्लिकेशन इलेक्ट्रॉन वापरून डेस्कटॉप ॲप्लिकेशन म्हणून पॅकेज करा.
ब्राउझरच्या पलीकडे TensorFlow.js: Node.js इंटिग्रेशन
मुख्यतः ब्राउझरसाठी डिझाइन केलेले असले तरी, TensorFlow.js Node.js वातावरणात देखील वापरले जाऊ शकते. हे खालील कार्यांसाठी उपयुक्त आहे:
- सर्व्हर-साइड प्रीप्रोसेसिंग: क्लायंटला डेटा पाठवण्यापूर्वी सर्व्हरवर डेटा प्रीप्रोसेसिंगची कार्ये करा.
- मॉडेल ट्रेनिंग: Node.js वातावरणात मॉडेल्सना प्रशिक्षित करा, विशेषतः मोठ्या डेटासेटसाठी जे ब्राउझरमध्ये लोड करणे अव्यवहार्य आहे.
- बॅच इन्फरन्स: सर्व्हर-साइडवर मोठ्या डेटासेटवर बॅच इन्फरन्स करा.
Node.js मध्ये TensorFlow.js वापरण्यासाठी, @tensorflow/tfjs-node
पॅकेज इन्स्टॉल करा:
npm install @tensorflow/tfjs-node
जागतिक प्रेक्षकांसाठी विचार करण्याच्या गोष्टी
जागतिक प्रेक्षकांसाठी TensorFlow.js ॲप्लिकेशन्स विकसित करताना, खालील बाबी लक्षात ठेवा:
- स्थानिकीकरण (Localization): अनेक भाषा आणि प्रदेशांना सपोर्ट करण्यासाठी तुमचे ॲप्लिकेशन स्थानिकीकृत करा. यात मजकूर अनुवाद करणे, संख्या आणि तारखांचे स्वरूपन करणे आणि वेगवेगळ्या सांस्कृतिक परंपरांशी जुळवून घेणे समाविष्ट आहे.
- ॲक्सेसिबिलिटी (सुलभता): तुमचे ॲप्लिकेशन अपंग वापरकर्त्यांसाठी ॲक्सेसिबल असल्याची खात्री करा. तुमचे ॲप्लिकेशन प्रत्येकासाठी वापरण्यायोग्य बनवण्यासाठी WCAG सारख्या ॲक्सेसिबिलिटी मार्गदर्शक तत्त्वांचे पालन करा.
- डेटा प्रायव्हसी (माहितीची गोपनीयता): GDPR आणि CCPA सारख्या डेटा गोपनीयता नियमांचे पालन करा. वापरकर्त्यांचा वैयक्तिक डेटा संकलित करण्यापूर्वी किंवा त्यावर प्रक्रिया करण्यापूर्वी त्यांची संमती मिळवा. वापरकर्त्यांना त्यांच्या डेटावर नियंत्रण द्या आणि त्यांचा डेटा सुरक्षितपणे संग्रहित असल्याची खात्री करा.
- नेटवर्क कनेक्टिव्हिटी: तुमचे ॲप्लिकेशन वेगवेगळ्या नेटवर्क परिस्थितींना तोंड देण्यासाठी डिझाइन करा. वापरकर्त्यांना ऑफलाइन किंवा मर्यादित कनेक्टिव्हिटीसह कंटेंटमध्ये प्रवेश करण्याची परवानगी देण्यासाठी कॅशिंग यंत्रणा लागू करा. डेटा वापर कमी करण्यासाठी तुमच्या ॲप्लिकेशनचा परफॉर्मन्स ऑप्टिमाइझ करा.
- हार्डवेअर क्षमता: वेगवेगळ्या प्रदेशांमधील वापरकर्त्यांच्या हार्डवेअर क्षमतांचा विचार करा. तुमचे ॲप्लिकेशन कमी-क्षमतेच्या डिव्हाइसवर सुरळीतपणे चालण्यासाठी ऑप्टिमाइझ करा. वेगवेगळ्या डिव्हाइस प्रकारांसाठी तुमच्या ॲप्लिकेशनचे पर्यायी आवृत्त्या प्रदान करा.
नैतिक विचार
कोणत्याही मशीन लर्निंग तंत्रज्ञानाप्रमाणे, TensorFlow.js वापरण्याचे नैतिक परिणाम विचारात घेणे आवश्यक आहे. तुमच्या डेटा आणि मॉडेल्समधील संभाव्य पूर्वग्रहांबद्दल जागरूक रहा आणि निष्पक्ष, पारदर्शक आणि जबाबदार ॲप्लिकेशन्स तयार करण्याचा प्रयत्न करा. येथे काही विचार करण्यासारखे क्षेत्र आहेत:
- पूर्वाग्रह आणि निष्पक्षता: पूर्वग्रहदूषित परिणाम टाळण्यासाठी तुमचा ट्रेनिंग डेटा विविध लोकसंख्येचे प्रतिनिधित्व करतो याची खात्री करा. वेगवेगळ्या लोकसंख्याशास्त्रीय गटांमध्ये निष्पक्षतेसाठी तुमच्या मॉडेल्सचे नियमितपणे ऑडिट करा.
- पारदर्शकता आणि स्पष्टीकरणयोग्यता: तुमचे मॉडेल्स समजण्यायोग्य आणि त्यांचे निर्णय स्पष्टीकरणयोग्य बनवण्याचा प्रयत्न करा. फीचरचे महत्त्व समजून घेण्यासाठी LIME किंवा SHAP सारख्या तंत्रांचा वापर करा.
- गोपनीयता: वापरकर्त्याच्या डेटाचे संरक्षण करण्यासाठी मजबूत गोपनीयता उपाययोजना लागू करा. शक्य असेल तिथे डेटा अनामित करा आणि वापरकर्त्यांना त्यांच्या डेटावर नियंत्रण द्या.
- जबाबदारी: तुमच्या मॉडेल्सद्वारे घेतलेल्या निर्णयांसाठी जबाबदार रहा. त्रुटी आणि पूर्वग्रह दूर करण्यासाठी यंत्रणा स्थापित करा.
- सुरक्षितता: तुमच्या मॉडेल्सना विरोधी हल्ल्यांपासून वाचवा आणि तुमच्या ॲप्लिकेशनची सुरक्षितता सुनिश्चित करा.
फ्रंटएंड मशीन लर्निंगचे भविष्य
फ्रंटएंड मशीन लर्निंग हे एक वेगाने विकसित होणारे क्षेत्र आहे आणि त्याचे भविष्य उज्ज्वल आहे. जसजसे ब्राउझर तंत्रज्ञान प्रगत होत जाईल आणि मशीन लर्निंग मॉडेल्स अधिक कार्यक्षम होतील, तसतसे येत्या काही वर्षांत आपल्याला आणखी अत्याधुनिक आणि नाविन्यपूर्ण ॲप्लिकेशन्स पाहायला मिळतील अशी अपेक्षा आहे. पाहण्यासारखे प्रमुख ट्रेंड:
- एज कंप्युटिंग: गणनेला नेटवर्कच्या काठाच्या जवळ नेणे, ज्यामुळे रिअल-टाइम प्रक्रिया आणि कमी लेटन्सी शक्य होईल.
- फेडरेटेड लर्निंग: डेटा स्वतः शेअर न करता विकेंद्रित डेटा स्त्रोतांवर मॉडेल्स प्रशिक्षित करणे, ज्यामुळे गोपनीयता आणि सुरक्षितता वाढते.
- टायनीएमएल (TinyML): मायक्रोकंट्रोलर्स आणि एम्बेडेड डिव्हाइसवर मशीन लर्निंग मॉडेल्स चालवणे, ज्यामुळे IoT आणि वेअरेबल तंत्रज्ञान यांसारख्या क्षेत्रांमध्ये ॲप्लिकेशन्स शक्य होतात.
- स्पष्टीकरणीय एआय (XAI): अधिक पारदर्शक आणि स्पष्टीकरणीय मॉडेल्स विकसित करणे, ज्यामुळे त्यांचे निर्णय समजणे आणि त्यावर विश्वास ठेवणे सोपे होते.
- एआय-संचालित युजर इंटरफेस: वापरकर्त्याच्या वर्तनानुसार जुळवून घेणारे आणि वैयक्तिकृत अनुभव देणारे युजर इंटरफेस तयार करणे.
निष्कर्ष
TensorFlow.js डेव्हलपर्सना मशीन लर्निंगची शक्ती फ्रंटएंडवर आणण्यास सक्षम करते, ज्यामुळे जलद, अधिक खाजगी आणि अधिक आकर्षक वेब ॲप्लिकेशन्स तयार होतात. मूलभूत संकल्पना समजून घेऊन, व्यावहारिक उपयोगांचा शोध घेऊन आणि नैतिक परिणामांचा विचार करून, तुम्ही फ्रंटएंड मशीन लर्निंगची पूर्ण क्षमता अनलॉक करू शकता आणि जागतिक प्रेक्षकांसाठी नाविन्यपूर्ण सोल्यूशन्स तयार करू शकता. शक्यतांना स्वीकारा आणि आजच TensorFlow.js च्या रोमांचक जगात प्रवेश करा!
अधिक संसाधने:
- TensorFlow.js अधिकृत डॉक्युमेंटेशन: https://www.tensorflow.org/js
- TensorFlow Hub: https://tfhub.dev/
- TensorFlow.js उदाहरणे: https://github.com/tensorflow/tfjs-examples