TensorFlow.js जावास्क्रिप्ट में टेंसर का उपयोग करके गणनाओं को परिभाषित करने और चलाने के लिए एक ढांचा है। एक टेंसर उच्च आयामों के लिए वैक्टर और मैट्रिसेस का सामान्यीकरण है।
टेंसर
TensorFlow.js में डेटा की केंद्रीय इकाई tf.Tensor
है: एक या अधिक आयामों की एक सरणी में आकार के मानों का एक सेट। tf.Tensor
s बहुआयामी सरणियों के समान हैं।
एक tf.Tensor
में निम्नलिखित गुण भी होते हैं:
-
rank
: परिभाषित करता है कि टेंसर में कितने आयाम हैं -
shape
: जो डेटा के प्रत्येक आयाम के आकार को परिभाषित करता है -
dtype
: जो टेंसर के डेटा प्रकार को परिभाषित करता है।
tf.tensor()
विधि के साथ एक सरणी से एक tf.Tensor
बनाया जा सकता है:
// Create a rank-2 tensor (matrix) matrix tensor from a multidimensional array.
const a = tf.tensor([[1, 2], [3, 4]]);
console.log('shape:', a.shape);
a.print();
// Or you can create a tensor from a flat array and specify a shape.
const shape = [2, 2];
const b = tf.tensor([1, 2, 3, 4], shape);
console.log('shape:', b.shape);
b.print();
डिफ़ॉल्ट रूप से, tf.Tensor
s में एक float32
dtype.
tf.Tensor
s को bool, int32, complex64 और string dtypes के साथ भी बनाया जा सकता है:
const a = tf.tensor([[1, 2], [3, 4]], [2, 2], 'int32');
console.log('shape:', a.shape);
console.log('dtype', a.dtype);
a.print();
TensorFlow.js यादृच्छिक टेंसर बनाने के लिए सुविधा विधियों का एक सेट भी प्रदान करता है, एक विशेष मान से भरे टेंसर, HTMLImageElement
s से टेंसर, और बहुत कुछ जो आप यहां पा सकते हैं।
एक टेंसर का आकार बदलना
एक tf.Tensor
में तत्वों की संख्या उसके आकार का गुणनफल है। चूंकि कई बार एक ही आकार के साथ कई आकार हो सकते हैं, tf.Tensor
को समान आकार के साथ किसी अन्य आकार में बदलने में सक्षम होना अक्सर उपयोगी होता है। इसे reshape()
विधि से प्राप्त किया जा सकता है:
const a = tf.tensor([[1, 2], [3, 4]]);
console.log('a shape:', a.shape);
a.print();
const b = a.reshape([4, 1]);
console.log('b shape:', b.shape);
b.print();
एक टेंसर से मूल्य प्राप्त करना
आप Tensor.array()
या Tensor.data()
विधियों का उपयोग करके tf.Tensor
से मान भी प्राप्त कर सकते हैं:
const a = tf.tensor([[1, 2], [3, 4]]);
// Returns the multi dimensional array of values.
a.array().then(array => console.log(array));
// Returns the flattened data that backs the tensor.
a.data().then(data => console.log(data));
हम इन विधियों के समकालिक संस्करण भी प्रदान करते हैं जो उपयोग करने में आसान होते हैं, लेकिन आपके आवेदन में प्रदर्शन समस्याओं का कारण बनेंगे। आपको उत्पादन अनुप्रयोगों में हमेशा अतुल्यकालिक विधियों को प्राथमिकता देनी चाहिए।
const a = tf.tensor([[1, 2], [3, 4]]);
// Returns the multi dimensional array of values.
console.log(a.arraySync());
// Returns the flattened data that backs the tensor.
console.log(a.dataSync());
संचालन
जबकि टेंसर आपको डेटा स्टोर करने की अनुमति देते हैं, ऑपरेशन (ऑप्स) आपको उस डेटा में हेरफेर करने की अनुमति देते हैं। TensorFlow.js रैखिक बीजगणित और मशीन सीखने के लिए उपयुक्त विभिन्न प्रकार के ऑप्स भी प्रदान करता है जिन्हें टेंसर पर किया जा सकता है।
उदाहरण: tf.Tensor
में सभी तत्वों के x 2 की गणना करना:
const x = tf.tensor([1, 2, 3, 4]);
const y = x.square(); // equivalent to tf.square(x)
y.print();
उदाहरण: दो tf.Tensor
के तत्व-वार तत्वों को जोड़ना:
const a = tf.tensor([1, 2, 3, 4]);
const b = tf.tensor([10, 20, 30, 40]);
const y = a.add(b); // equivalent to tf.add(a, b)
y.print();
क्योंकि टेंसर अपरिवर्तनीय हैं, ये ऑप्स अपने मूल्यों को नहीं बदलते हैं। इसके बजाय, ops return हमेशा new tf.Tensor
s लौटाता है।
आप TensorFlow.js द्वारा समर्थित कार्यों की सूची यहाँ पा सकते हैं।
स्मृति
WebGL बैकएंड का उपयोग करते समय, tf.Tensor
मेमोरी को स्पष्ट रूप से प्रबंधित किया जाना चाहिए (यह tf.Tensor
को इसकी मेमोरी को रिलीज़ करने के दायरे से बाहर जाने के लिए पर्याप्त नहीं है)।
tf.Tensor की मेमोरी को नष्ट करने के लिए, आप डिस्पोज़ dispose()
विधि या tf.dispose()
का उपयोग कर सकते हैं:
const a = tf.tensor([[1, 2], [3, 4]]);
a.dispose(); // Equivalent to tf.dispose(a)
एक एप्लिकेशन में कई ऑपरेशनों को एक साथ चेन करना बहुत आम है। सभी मध्यवर्ती चरों को निपटाने के लिए एक संदर्भ रखने से कोड की पठनीयता कम हो सकती है। इस समस्या को हल करने के लिए, TensorFlow.js एक tf.tidy()
विधि प्रदान करता है जो सभी tf.Tensor
s को साफ़ करता है जो इसे निष्पादित करने के बाद किसी फ़ंक्शन द्वारा वापस नहीं किया जाता है, जैसे कि फ़ंक्शन निष्पादित होने पर स्थानीय चर साफ़ किए जाते हैं:
const a = tf.tensor([[1, 2], [3, 4]]);
const y = tf.tidy(() => {
const result = a.square().log().neg();
return result;
});
इस उदाहरण में, square()
और log()
का परिणाम स्वचालित रूप से निपटाया जाएगा। नकारात्मक () के परिणाम का निपटान नहीं किया जाएगा क्योंकि यह neg()
() का वापसी मूल्य है।
आप TensorFlow.js द्वारा ट्रैक किए गए Tensors की संख्या भी प्राप्त कर सकते हैं:
console.log(tf.memory());
tf.memory()
द्वारा मुद्रित ऑब्जेक्ट में इस बारे में जानकारी होगी कि वर्तमान में कितनी मेमोरी आवंटित की गई है। आप यहां अधिक जानकारी प्राप्त कर सकते हैं।