इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

आकृतियाँ और लेआउट

XLA Shape प्रोटो ( xla_data.proto ) एन-आयामी सरणी (संक्षेप में सरणी ) के रैंक, आकार और डेटा प्रकार का वर्णन करता है।

शब्दावली, संकेतन, और अभिसमय

  • किसी सरणी का रैंक आयामों की संख्या के बराबर है। किसी सरणी का वास्तविक रैंक आयामों की संख्या है जिनका आकार 1 से अधिक है।

  • आयाम से गिने जा रहे हैं 0 अप करने के लिए N-1 एक के लिए N आयामी सरणी। आयाम संख्या सुविधा के लिए मनमाने ढंग से लेबल हैं। इन आयाम संख्याओं का क्रम आकृति के लेआउट में एक विशेष रूप से मामूली / प्रमुख आदेश नहीं देता है। लेआउट Layout प्रोटो द्वारा निर्धारित किया जाता है।

  • सम्मेलन द्वारा, आयाम संख्या के बढ़ते क्रम में सूचीबद्ध हैं। उदाहरण के लिए, आकार के 3-आयामी सरणी के लिए [A x B x C] , आयाम 0 का आकार A , आयाम 1 का आकार B और आयाम 2 का आकार C

    एक्सएलए में कुछ उपयोगिताओं भी नकारात्मक अनुक्रमण का समर्थन करती हैं, इसी तरह पायथन; आयाम -1 अंतिम आयाम है ( N आयामी सरणी के लिए N-1 -1 के बराबर)। उदाहरण के लिए, ऊपर वर्णित 3-आयामी सरणी के लिए, आयाम -1 का आकार C , आयाम -2 का आकार B और इसी तरह है।

  • दो, तीन और चार आयामी सरणियों में अक्सर आयामों से जुड़े विशिष्ट पत्र होते हैं। उदाहरण के लिए, 2 डी सरणी के लिए:

    • आयाम 0: y
    • आयाम 1: x

    एक 3D सरणी के लिए:

    • आयाम 0: z
    • आयाम 1: y
    • आयाम 2: x

    4D सरणी के लिए:

    • आयाम 0: p
    • आयाम 1: z
    • आयाम 2: y
    • आयाम 3: x
  • एक्सएलए एपीआई में कार्य जो आयाम लेते हैं वे आयाम संख्या के बढ़ते क्रम में ऐसा करते हैं। यह initializer_list रूप में गुजरते समय उपयोग किए गए ऑर्डर से मेल खाता initializer_list ; जैसे

    ShapeUtil::MakeShape(F32, {A, B, C, D})

    एक ऐसी आकृति बनाएंगे जिसका आयाम आकार सरणी में अनुक्रम [A, B, C, D]

ख़ाका

Layout प्रोटो वर्णन करता है कि स्मृति में एक सरणी का प्रतिनिधित्व कैसे किया जाता है। Layout प्रोटो में निम्नलिखित क्षेत्र शामिल हैं:

 message Layout {
  repeated int64 minor_to_major = 1;
  repeated int64 padded_dimensions = 2;
  optional PaddingValue padding_value = 3;
}
 

मामूली-से-प्रमुख आयाम आदेश देना

एकमात्र आवश्यक फ़ील्ड minor_to_major । यह फ़ील्ड किसी आकार के भीतर छोटे-से-बड़े आदेश का वर्णन करती है। में मान minor_to_major सरणी के (आयामों के एक आदेश हैं 0 करने के लिए N-1 एक के लिए N पहला मान अंतिम मान जो सबसे प्रमुख आयाम है करने के लिए सबसे अधिक नाबालिग आयाम अप होने के साथ आयामी सरणी)। सबसे मामूली आयाम वह आयाम है जो रैखिक स्मृति में रखी गई सरणी के तत्वों के माध्यम से कदम रखते हुए सबसे तेजी से बदलता है।

उदाहरण के लिए, आकार के निम्नलिखित 2 डी सरणी पर विचार करें [2 x 3] :

 a b c
d e f
 

यहाँ आयाम 0 का आकार 2 है, और आयाम 1 का आकार 3 है। यदि लेआउट में minor_to_major क्षेत्र [0, 1] तो आयाम 0 सबसे छोटा आयाम है और आयाम 1 सबसे प्रमुख आयाम है। यह रैखिक मेमोरी में निम्नलिखित लेआउट से मेल खाती है:

 a d b e c f
 

0 से N-1 का यह मामूली-से-प्रमुख आयाम क्रम स्तंभ-प्रमुख (रैंक 2 पर) के समान है। आयामों के एक मोनोटोनिक आदेश को मानते हुए, कोड में इस लेआउट को संदर्भित करने के लिए हम एक और नाम का उपयोग कर सकते हैं, बस "मंद 0 मामूली है"।

दूसरी ओर, यदि लेआउट में minor_to_major क्षेत्र [1, 0] तो रैखिक मेमोरी में लेआउट निम्न है:

 a b c d e f
 

का एक छोटा सा करने वाली प्रमुख आयाम आदेश N-1 के लिए नीचे 0 एक के लिए N आयामी सरणी पंक्ति-प्रमुख (रैंक 2 पर) के लिए समान है। आयामों के एक मोनोटोनिक आदेश को मानते हुए, कोड में इस लेआउट को संदर्भित करने के लिए एक और नाम जिसका हम उपयोग कर सकते हैं, बस "मंद 0 प्रमुख है"।

डिफ़ॉल्ट मामूली-से-प्रमुख आदेश

नव निर्मित आकृतियों के लिए डिफ़ॉल्ट लेआउट "आयाम क्रम प्रमुख-से-मामूली है" (रैंक 2 में पंक्ति-प्रमुख के समान)।

गद्दी

पैडिंग को वैकल्पिक padded_dimensions और padding_value फ़ील्ड में परिभाषित किया गया है। फ़ील्ड padded_dimensions आकार (चौड़ाई) का वर्णन करता है, जिससे प्रत्येक आयाम गद्देदार होता है। यदि मौजूद है, तो padded_dimensions में तत्वों की संख्या आकृति की रैंक के बराबर होनी चाहिए।

उदाहरण के लिए, दिए गए [2 x 3] , सरणी ऊपर परिभाषित करता है, तो padded_dimensions है [3, 5] तो आयाम 0 गद्देदार करने के लिए एक 3 और आयाम 1 की चौड़ाई 5. रैखिक स्मृति में लेआउट की चौड़ाई के लिए गद्देदार है (यह मानते हुए एक गद्दी मान 0 और स्तंभ-प्रमुख लेआउट) है:

 a d 0 b e 0 c f 0 0 0 0 0 0 0
 

यह एक ही मामूली-से-प्रमुख आयाम क्रम के साथ निम्न सरणी के लेआउट के बराबर है:

 a b c 0 0
d e f 0 0
0 0 0 0 0
 

सरणियों में अनुक्रमण

वर्ग IndexUtil में index_util.h बहुआयामी सूचकांक के बीच है और एक आकार और लेआउट दिया सूचकांक रैखिक परिवर्तित करने के लिए उपयोगिताओं प्रदान करता है। बहुआयामी सूचकांकों में प्रत्येक आयाम के लिए एक int64 सूचकांक शामिल है। रैखिक सूचकांकों एक एकल int64 मूल्य है जो सरणी को पकड़े हुए बफर में अनुक्रमित होता है। आकार और लेआउट के निर्माण और हेरफेर को सरल बनाने वाली उपयोगिताओं के लिए एक ही निर्देशिका में shape_util.h और layout_util.h देखें।