این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

شکل و چیدمان

XLA Shape proto ( xla_data.proto ) رتبه ، اندازه و نوع داده های یک آرایه N بعدی ( آرایه به طور خلاصه) را شرح می دهد.

اصطلاحات ، نشانه گذاری ها و کنوانسیون ها

  • رتبه یک آرایه برابر با ابعاد است. رتبه واقعی آرایه تعداد ابعادی است که سایز آن بزرگتر از 1 است.

  • ابعاد از 0 تا N-1 برای یک آرایه بعدی N شماره گذاری می شود. اعداد بعدی برچسب دلخواه برای راحتی هستند. ترتیب این اعداد بعدی به معنای ترتیب جزئی / اصلی خاص در طرح شکل نیست. طرح با استفاده از Layout تعیین می شود.

  • طبق کنوانسیون ، ابعاد به ترتیب ترتیب تعداد بعد ذکر شده اند. به عنوان مثال ، برای یک آرایه 3 بعدی اندازه [A x B x C] ، ابعاد 0 دارای اندازه A ، بعد 1 دارای اندازه B و بعد 2 دارای اندازه C .

    برخی از خدمات XLA نیز از فهرست بندی منفی پشتیبانی می کنند ، مشابه پایتون. بعد -1 آخرین بعد است (معادل N-1 برای یک آرایه بعدی N ). به عنوان مثال ، برای آرایه 3 بعدی که در بالا توضیح داده شد ، بعد -1 دارای اندازه C ، بعد -2 دارای اندازه B و غیره است.

  • آرایه های دو ، سه و چهار بعدی اغلب دارای حروف خاص همراه با ابعاد هستند. به عنوان مثال ، برای یک آرایه 2D:

    • بعد 0: y
    • ابعاد 1: x

    برای یک آرایه سه بعدی:

    • بعد 0: z
    • بعد 1: y
    • بعد 2: x

    برای یک آرایه 4D:

    • بعد 0: p
    • بعد 1: z
    • بعد 2: y
    • بعد 3: x
  • توابع در API XLA که ابعاد را در نظر می گیرد ، این امر را با افزایش تعداد ابعاد انجام می دهد. این با ترتیب استفاده شده هنگام عبور ابعاد به عنوان 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 بعدی) است که اولین مقدار آن جزئی ترین ابعاد تا آخرین مقدار است که بیشترین بعد را دارد. جزئی ترین بعد ابعادی است که هنگام پیمایش از طریق عناصر آرایه در حافظه خطی با سرعت بیشتری تغییر می کند.

به عنوان مثال ، آرایه 2D زیر را اندازه [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).

لایه گذاری

Padding در قسمت های اختیاری 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 واحد int64 که درون بافر نگهدارنده آرایه قرار می گیرند. مشاهده shape_util.h و layout_util.h در همان شاخه برای آب و برق که ایجاد ساده و دستکاری اشکال و طرح بندی.