页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

XLA Shapeproto(xla_data.proto)描述了N维数组的排名,大小和数据类型(简称为数组)。

术语,符号和公约

  • 数组的等级等于维数。 数组的真实等级是尺寸大于1的维数。

  • 尺寸从编号0最多N-1为一个N二维阵列。为方便起见,维数是任意标签。这些尺寸数字的顺序并不意味着形状布局中的特定次要/主要排序。布局由Layout原型决定。

  • 根据惯例,尺寸按照维数的增加顺序列出。例如,对于尺寸为3维的数组,尺寸[A x B x C]0具有尺寸A,尺寸1具有尺寸B,尺寸2具有尺寸 C

    XLA中的一些实用程序也支持负索引,与Python类似; 维-1是最后一维(相当于N-1一个N 二维阵列)。例如,对于上述3维阵列,尺寸-1具有尺寸C,尺寸-2具有大小B等等。

  • 两维,三维和四维阵列通常具有与尺寸相关联的特定字母。例如,对于2D数组:

    • 尺寸0: y
    • 尺寸1: x

    对于3D阵列:

    • 尺寸0: z
    • 尺寸1: y
    • 尺寸2: x

    对于4D阵列:

    • 尺寸0: p
    • 尺寸1: z
    • 尺寸2: y
    • 尺寸3: x
  • 采用维度的XLA API中的函数以增加维数的顺序进行。这符合当通过尺寸时使用的顺序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)。假设一个单调的维度排序,我们可以使用另一个名称来代替代码中的这个布局,就是“dim 0 is minor”。

另一方面,如果minor_to_major布局中的字段是[1, 0]线性内存中的布局是:

a b c d e f
的A小调到大尺寸顺序N-1下降到0一个N二维数组是类似于行优先(在秩2)。假设一个维度的单调排序,我们可以用这个代码中的这个布局引用另一个名字就是“dim 0 is major”。

默认的小到大排序

新创建的形状的默认布局是“尺寸顺序是主要到次要”(类似于排在第2排的主排序)。

填充

填充在可选padded_dimensionspadding_value 字段中定义。该字段padded_dimensions描述了每个维度被填充到的大小(宽度)。如果存在,元素的数量padded_dimensions 必须等于形状的等级。

例如,给定[2 x 3]上面定义的数组,如果padded_dimension是 [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在同一个目录中。

 

  • 无标签