रैखिक बीजगणित गणना में अक्सर उपयोग किए जाने वाले डेटा प्रारूपों के DataLayout
उदाहरणों को उजागर करता है।
उपयोग का उदाहरण:
// Storing boolean values in a ByteDataBuffer
BooleanDataBuffer boolBuffer = DataLayouts.BOOL.applyTo(byteDataBuffer);
// Allocating a new buffer of 256 half floats
FloatDataBuffer halfBuffer = DataLayouts.FLOAT16.applyTo(DataBuffers.ofShorts(256 * DataLayouts.FLOAT16.scale());
खेत
सार्वजनिक स्थैतिक अंतिम FloatDataLayout < ShortDataBuffer > | BFLOAT16 | 16-बिट बीफ्लोट्स को छोटे मानों में/से परिवर्तित करने के लिए डेटा लेआउट। |
सार्वजनिक स्थैतिक अंतिम BooleanDataLayout < ByteDataBuffer > | बूल | बूलियन्स को बाइट मानों में/से परिवर्तित करने के लिए डेटा लेआउट। |
सार्वजनिक स्थैतिक अंतिम FloatDataLayout < ShortDataBuffer > | फ्लोट16 | 16-बिट आधे फ़्लोट को छोटे मानों में/से परिवर्तित करने के लिए डेटा लेआउट। |
सार्वजनिक निर्माता
डेटालेआउट्स () |
सार्वजनिक तरीके
स्थिर डेटालेआउट < डेटाबफ़र <बाइट[]>, स्ट्रिंग> | ऑफस्ट्रिंग्स (चारसेट चारसेट) स्ट्रिंग्स को बाइट अनुक्रमों में/से परिवर्तित करने के लिए एक डेटा लेआउट बनाता है। |
विरासत में मिली विधियाँ
खेत
सार्वजनिक स्थैतिक अंतिम FloatDataLayout < ShortDataBuffer > BFLOAT16
16-बिट बीफ्लोट्स को छोटे मानों में/से परिवर्तित करने के लिए डेटा लेआउट।
यह प्रारूप TensorFlow के लिए विशिष्ट हुआ करता था लेकिन अब इसे मशीन लर्निंग क्षेत्र में अधिक व्यापक रूप से अपनाया गया है। इसे केवल उनके मान को स्थानांतरित करके और मंटिसा को केवल 7 बिट्स तक छोटा करके एकल-परिशुद्धता 32-बिट फ़्लोटिंग पॉइंट के साथ तेज़ रूपांतरण के लिए अनुकूलित किया गया है।
इसलिए, यह IEEE-754 अर्ध-परिशुद्धता फ़्लोटिंग पॉइंट विनिर्देश की तुलना में अंश भाग में परिशुद्धता का नुकसान है ( FLOAT16
देखें लेकिन इसमें पूरे भाग में संभावित मानों की एक बड़ी श्रृंखला है क्योंकि यह 8-बिट एक्सपोनेंट को संरक्षित करता है और उपयोग करता है) समान पूर्वाग्रह, (यानी लगभग 0 से ऊपर एक निरपेक्ष सीमा [10 -40 , 3.39 × 10 38 ]
कुछ सीपीयू बेहतर प्रदर्शन के लिए मूल रूप से bfloat16 प्रारूप का समर्थन करते हैं।
सार्वजनिक स्थैतिक अंतिम BooleanDataLayout < ByteDataBuffer > BOOL
बूलियन्स को बाइट मानों में/से परिवर्तित करने के लिए डेटा लेआउट।
चूँकि कोई जावा एनआईओ बूलियन बफ़र नहीं है, यह लेआउट बूलियन मानों को मानक बाइट बफ़र्स में मैप करने के लिए विशेष रूप से उपयोगी है। बूलियन और बाइट के बीच रूपांतरण के लिए स्पष्ट प्रकार की कास्टिंग की आवश्यकता होती है।
सार्वजनिक स्थैतिक अंतिम FloatDataLayout < ShortDataBuffer > FLOAT16
16-बिट आधे फ़्लोट को छोटे मानों में/से परिवर्तित करने के लिए डेटा लेआउट।
आधे फ़्लोट्स को IEEE-754 अर्ध-सटीक फ़्लोटिंग पॉइंट विनिर्देश के अनुसार मेमोरी में संग्रहीत किया जाता है, और उपयोगकर्ता स्थान में 32-बिट फ़्लोट्स में/से परिवर्तित किया जाता है।
एकल फ्लोट (32-बिट) को आधे फ्लोट (16-बिट) में परिवर्तित करते समय परिशुद्धता का संभावित नुकसान होता है। आधे फ्लोट के लिए 0 से ऊपर के मानों की पूर्ण सीमा लगभग [5.96 × 10 -8 , 6.55 × 10 4 ] है और उनका दशमलव भाग 10 बिट्स मंटिसा तक पूर्णांकित है।
सामान्य तौर पर, आधी फ्लोट गणना जीपीयू पर बेहतर प्रदर्शन करती है, क्योंकि सामान्य तौर पर, सीपीयू मूल रूप से इस प्रारूप का समर्थन नहीं करते हैं।
सार्वजनिक निर्माता
सार्वजनिक डेटालेआउट्स ()
सार्वजनिक तरीके
सार्वजनिक स्थैतिक डेटालेआउट < डेटाबफ़र <बाइट[]>, स्ट्रिंग> ऑफ़स्ट्रिंग्स (वर्णसेट वर्णसेट)
स्ट्रिंग्स को बाइट अनुक्रमों में/से परिवर्तित करने के लिए एक डेटा लेआउट बनाता है।
इस लेआउट को यह निर्दिष्ट करने के लिए पैरामीटर में एक charset
आवश्यकता होती है कि स्ट्रिंग्स को बाइट अनुक्रमों के रूप में कैसे एन्कोड/डीकोड किया जाना चाहिए। इसलिए एक नया लेआउट उदाहरण हमेशा लौटाया जाता है।
पैरामीटर
charset | उपयोग करने के लिए वर्णसेट |
---|
रिटर्न
- एक नया स्ट्रिंग लेआउट