TensorFlow.js 3.0 में अपग्रेड करना

TensorFlow.js 3.0 में क्या परिवर्तन हुआ है?

रिलीज़ नोट यहां उपलब्ध हैं। कुछ उल्लेखनीय उपयोगकर्ता-सामना वाली विशेषताओं में शामिल हैं:

कस्टम मॉड्यूल

हम आकार अनुकूलित ब्राउज़र बंडलों के उत्पादन में सहायता के लिए कस्टम tfjs मॉड्यूल बनाने के लिए सहायता प्रदान करते हैं। अपने उपयोगकर्ताओं को कम जावास्क्रिप्ट भेजें। इसके बारे में अधिक जानने के लिए यह ट्यूटोरियल देखें

यह सुविधा ब्राउज़र में परिनियोजन के लिए तैयार की गई है, हालाँकि इस क्षमता को सक्षम करने से नीचे वर्णित कुछ परिवर्तन प्रेरित होते हैं।

ES2017 कोड

कुछ पूर्व-संकलन बंडलों के अलावा, मुख्य तरीका जिससे हम अब अपना कोड एनपीएम पर भेजते हैं वह ES2017 सिंटैक्स के साथ ईएस मॉड्यूल के रूप में है। इससे डेवलपर्स को आधुनिक जावास्क्रिप्ट सुविधाओं का लाभ उठाने और अपने अंतिम उपयोगकर्ताओं को जो भी भेजा जाता है उस पर अधिक नियंत्रण रखने की अनुमति मिलती है।

हमारा package.json module ES2017 प्रारूप में व्यक्तिगत लाइब्रेरी फ़ाइलों के लिए प्रवेश बिंदु है (यानी बंडल नहीं)। यह पेड़ को हिलाने और डाउनस्ट्रीम ट्रांसपिलेशन पर अधिक डेवलपर नियंत्रण को सक्षम बनाता है।

हम पुराने ब्राउज़र और अन्य मॉड्यूल सिस्टम का समर्थन करने के लिए पूर्व-संकलित बंडलों के रूप में कुछ वैकल्पिक प्रारूप प्रदान करते हैं। वे नीचे दी गई तालिका में वर्णित नामकरण परंपरा का पालन करते हैं और आप उन्हें JsDelivr और Unpkg जैसे लोकप्रिय CDN से लोड कर सकते हैं।

फ़ाइल का नाम मॉड्यूल प्रारूप भाषा संस्करण
tf[-पैकेज].[मिनट].js* यूएमडी ES5
tf[-package].es2017.[min].js यूएमडी ES2017
tf[-पैकेज].node.js** कॉमनजेएस ES5
tf[-package].es2017.fesm.[min].js ईएसएम (एकल फ्लैट फ़ाइल) ES2017
सूचकांक.जेएस*** ईएसएम ES2017

* [पैकेज] मुख्य tf.js पैकेज के उपपैकेजों के लिए कोर/कन्वर्टर/लेयर्स जैसे नामों को संदर्भित करता है। [मिनट] वर्णन करता है कि हम अनमिनिफाइड फाइलों के अलावा मिनिफाइड फाइलें कहां प्रदान करते हैं।

** हमारा package.json इस फ़ाइल का main प्रवेश बिंदु है।

*** हमारा package.json module प्रविष्टि इस फ़ाइल की ओर इंगित करता है।

यदि आप npm के माध्यम से Tensorflow.js का उपयोग कर रहे हैं और आप बंडलर का उपयोग कर रहे हैं, तो आपको यह सुनिश्चित करने के लिए अपने बंडलर कॉन्फ़िगरेशन को समायोजित करने की आवश्यकता हो सकती है कि यह या तो ES2017 मॉड्यूल का उपभोग कर सकता है या इसे आउट package.json में प्रविष्टियों में से किसी एक पर इंगित कर सकता है।

@tensorflow/tfjs-core डिफ़ॉल्ट रूप से पतला है

बेहतर ट्री-शेकिंग को सक्षम करने के लिए अब हम @tensorflow/tfjs-core में डिफ़ॉल्ट रूप से टेंसर पर चेनिंग/फ्लुएंट एपीआई शामिल नहीं करते हैं। हम सबसे छोटा बंडल प्राप्त करने के लिए सीधे ऑपरेशंस (ऑप्स) का उपयोग करने की सलाह देते हैं। हम एक आयात import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops'; जो चेनिंग एपीआई को पुनर्स्थापित करता है।

हम अब डिफ़ॉल्ट रूप से कर्नेल के लिए ग्रेडिएंट पंजीकृत नहीं करते हैं। यदि आप ग्रेडिएंट/प्रशिक्षण समर्थन चाहते हैं तो आप import '@tensorflow/tfjs-core/dist/register_all_gradients';

कोड पुनर्गठन, कर्नेल और ग्रेडिएंट रजिस्ट्रियां

हमने ऑप्स और कर्नेल दोनों के योगदान के साथ-साथ कस्टम ऑप्स, कर्नेल और ग्रेडिएंट्स को लागू करना आसान बनाने के लिए अपने कोड को फिर से व्यवस्थित किया है। अधिक जानकारी के लिए यह मार्गदर्शिका देखें .

ब्रेकिंग परिवर्तन

महत्वपूर्ण परिवर्तनों की पूरी सूची यहां पाई जा सकती है, लेकिन उनमें मलस्ट्रिक्ट या ऐडस्ट्रिक्ट जैसे सभी *सख्त ऑप्स को हटाना शामिल है।

2.x से कोड अपग्रेड करना

@tensorflow/tfjs के उपयोगकर्ता

यहां सूचीबद्ध किसी भी महत्वपूर्ण परिवर्तन को संबोधित करें ( https://github.com/tensorflow/tfjs/releases )

@tensorflow/tfjs-core के उपयोगकर्ता

यहां सूचीबद्ध किसी भी महत्वपूर्ण परिवर्तन को संबोधित करें ( https://github.com/tensorflow/tfjs/releases ), फिर निम्न कार्य करें:

चेन्ड ऑप ऑगमेंटर्स जोड़ें या सीधे ऑप्स का उपयोग करें

इसके बजाय

import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';

const a = tf.tensor([1,2,3,4]);
const b = a.sum(); // this is a 'chained' op.

आपको क्या करने की जरूरत है

import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';
import '@tensorflow/tfjs-core/dist/public/chained_ops/sum'; // add the 'sum' chained op to all tensors

const a = tf.tensor([1,2,3,4]);
const b = a.sum();

आप निम्नलिखित आयात के साथ सभी चेनिंग/धाराप्रवाह एपीआई भी आयात कर सकते हैं

import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops';

वैकल्पिक रूप से आप सीधे ऑप का उपयोग कर सकते हैं (आप यहां नामित आयात का भी उपयोग कर सकते हैं)

import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';

const a = tf.tensor([1,2,3,4]);
const b = tf.sum(a);

आरंभीकरण कोड आयात करें

यदि आप विशेष रूप से नामित आयातों का उपयोग कर रहे हैं ( import * as ... के बजाय) तो कुछ मामलों में आपको ऐसा करने की आवश्यकता हो सकती है

import @tensorflow/tfjs-core

आपके प्रोग्राम के शीर्ष के पास, यह आक्रामक ट्री-शेकर्स को किसी भी आवश्यक आरंभीकरण को छोड़ने से रोकता है।

1.x से कोड अपग्रेड करना

@tensorflow/tfjs के उपयोगकर्ता

यहां सूचीबद्ध किसी भी महत्वपूर्ण परिवर्तन पर ध्यान दें। फिर 2.x से अपग्रेड करने के लिए निर्देशों का पालन करें

@tensorflow/tfjs-core के उपयोगकर्ता

यहां सूचीबद्ध किसी भी ब्रेकिंग परिवर्तन को संबोधित करें, नीचे बताए अनुसार बैकएंड का चयन करें और फिर 2.x से अपग्रेड करने के लिए चरणों का पालन करें

बैकएंड का चयन करना

TensorFlow.js 2.0 में हमने सीपीयू और वेबजीएल बैकएंड को उनके अपने पैकेज में हटा दिया। उन बैकएंड को शामिल करने के निर्देशों के लिए @tensorflow/tfjs-backend-cpu , @tensorflow/tfjs-backend-webgl , @tensorflow/tfjs-backend-wasm , @tensorflow/tfjs-backend-webgpu देखें।