Эта страница была переведа с помощью Cloud Translation API.
Switch to English

семантика вещания

Этот документ описывает, как семантику вещания в XLA работы.

Что такое вещание?

Вещание процесс создания массивов с различными формами имеют совместимые формы для арифметических операций. Терминология заимствована из Numpy вещания .

Вещание может потребоваться для операций между многомерными массивами разных рангов, или между многомерными массивами с различными, но совместимыми формами. Рассмотрим сложение X+v , где X представляет собой матрицу (массив ранга 2) и v представляет собой вектор (массив ранга 1). Для того, чтобы выполнить поэлементное сложение, XLA должен «трансляцию» вектор v к тому же рангу, что и матрица X , путем репликации v определенное количество раз. Длина вектора должна соответствовать по меньшей мере, один из размеров матрицы.

Например:

 |1 2 3| + |7 8 9|
|4 5 6|
 

Размеры матрицы являются (2,3), вектор являются (3). Вектор вещается тиражирование его по строкам, чтобы получить:

 |1 2 3| + |7 8 9| = |8  10 12|
|4 5 6|   |7 8 9|   |11 13 15|
 

В Numpy, это называется вещание .

принципы

Язык XLA как строгий и четко, насколько это возможно, избегать неявных и «магические» функции. Такие признаки могут сделать некоторые вычисления немного проще определить, за счет большего количества предположений запеченных в код пользователя, который будет трудно изменить в долгосрочной перспективе. При необходимости, неявные и магические свойства могут быть добавлены в обертках клиента уровня.

Что касается вещания, явные спецификации вещания по операциям между массивами разных рангов требуется. Это отличается от Numpy, который выводит спецификации, когда это возможно.

Вещание массив низшего ранга на более высоком ранге массива

Скаляры всегда могут передаваться через массивы без явного задания вещания размеров. Поэлементно операция бинарной между скалярным и средствами массива применением операции со скаляром для каждого элемента в массиве. Например, добавление скаляр с матрицей означает производить матрицу, каждый элемент которого представляет собой сумму скаляра с элементом соответствующего входа матрицы.

 |1 2 3| + 7 = |8  9  10|
|4 5 6|       |11 12 13|
 

Большинство потребностей вещания могут быть захвачены, используя кортеж размеров на бинарной операции. Когда входные данные для операции имеют различные ряды, это вещания кортеж определяет , какой размер (ы) в массиве более высокого ранга , чтобы соответствовать с массивом более низкого ранга.

Рассмотрим предыдущий пример, вместо добавления скаляр к матрице (2,3), добавить вектор размерности (3) к матрице размерами (2,3). Без указания вещания, эта операция является недействительной. Чтобы правильно запрос матрицы сложения векторов, указать размер передающего быть (1), то есть размер вектора является соответствием размерности 1 матрицы. В 2D, если размер 0 рассматриваются как строки и размерность 1 в виде столбцов, то это означает, что каждый элемент вектора становится столбцом размера, соответствующим число строк в матрице:

 |7 8 9| ==> |7 8 9|
            |7 8 9|
 

В качестве более сложного примера рассмотрим добавление вектора 3-элемента (размер (3)) с матрицей 3х3 (размеры (3,3)). Есть два способа вещания может произойти в этом примере:

(1) Измерение вещания 1 может быть использован. Каждый вектор элемент становится столбец и вектор дублируется для каждой строки в матрице.

 |7 8 9| ==> |7 8 9|
            |7 8 9|
            |7 8 9|
 

(2) Измерение трансляции 0 может быть использовано. Каждый элемент вектора становится строкой и вектор дублируется для каждого столбца в матрице.

  |7| ==> |7 7 7|
 |8|     |8 8 8|
 |9|     |9 9 9|
 

Радиовещательных размеры могут быть кортежем, который описывает, как меньшая форма ранга транслируется в большую форму ранга. Например, дали 2x3x4 кубоид и матрицу 3х4, вещательная кортеж (1,2) означает соответствие матрицы для размеров 1 и 2 параллелепипеда.

Этот тип вещания используется в бинарных ОПС в XlaBuilder , если broadcast_dimensions задан аргумент. Например, см XlaBuilder :: Add . В исходном коде XLA, этот тип вещания иногда называют «InDim» вещания.

Формальное определение

Атрибут позволяет передавать соответствие с более низкого ранга массива в массив более высокого ранга, путем определения того, какие размеры массива более высокого ранга, чтобы соответствовать. Например, для массива с размерами MxNxPxQ, вектор размерности Т могут быть подобраны следующим образом:

           MxNxPxQ

dim 3:          T
dim 2:        T
dim 1:      T
dim 0:    T
 

В каждом случае Т должен быть равен согласующим измерение массива более высокого ранга. Значения вектора в затем транслируется из согласованного измерения для всех других измерений.

Чтобы соответствовать матрицу ТРВ на массив MxNxPxQ, пара вещания размеров используются:

           MxNxPxQ
dim 2,3:      T V
dim 1,2:    T V
dim 0,3:  T     V
etc...
 

Порядок измерений в вещательной кортеж должен быть порядок, в котором размеры нижнего ранга массива, как ожидается, чтобы соответствовать размеры более высокого ранга массива. Первый элемент кортежа говорит какое измерение в массиве более высокого ранга должен соответствовать размерности 0 в массиве более низкого ранга. Второй элемент для размерности 1, и так далее. Порядок размеров широковещательных должен быть строго возрастает. Например, в предыдущем примере, это незаконно, чтобы соответствовать V к N и Т к Р; это также незаконно, чтобы соответствовать V как к P и N.

Вещание аналогичного ранга матрицы с вырожденными размерами

Родственная проблема вещания транслирует два массива, которые имеют одинаковый ранг, но разные размеры измерений. Аналогично правилам Numpy, это возможно только тогда , когда массивы являются совместимыми. Два массива является совместимым, когда все их размеры совместимы. Два измерения являются совместимыми, если:

  • Они равны, или
  • Одним из них является 1 (а «вырожденным» измерение)

Когда две совместимые массивы встречаются, форма результата имеет максимум между двумя входами на каждый индексе измерения.

Примеры:

  1. (2,1) и (2,3) для широковещательной передачи (2,3).
  2. (1,2,5) и (7,2,5) для широковещательной передачи (7,2,5)
  3. (7,2,5) и (7,1,5) для широковещательной передачи (7,2,5)
  4. (7,2,5) и (7,2,6) несовместимы и не могут передаваться.

Особый случай возникает, а также поддерживается, где каждый из входных массивов имеет вырожденный измерение на другой индекс. В этом случае, результат является «внешней операцией»: (2,1) и (1,3) для широковещательной передачи (2,3). Дополнительные примеры, обратитесь к документации по Numpy вещания .

состав Broadcast

Вещание из более низкого ранга массива в массив более высокого ранга и вещания с использованием вырожденных размеры и могут быть выполнены в одной и той же бинарной операции. Например, вектор размера 4 и матрица размера 1х2 могут быть добавлены вместе, используя размеры широковещательного значения (0):

 |1 2 3 4| + [5 6]    // [5 6] is a 1x2 matrix, not a vector.
 

Первый вектор транслируется до ранга 2 (матрицы) с использованием размеров вещания. Одно значение (0) в размерах широковещательных указует на то, что размерность нуль векторных матчей к нулевой размерности матрицы. Это создает матрицу размера 4хм, где выбираются значение М, чтобы соответствовать соответствующему размеру измерения в массиве 1х2. Таким образом, матрица 4х2 производится:

 |1 1| + [5 6]
|2 2|
|3 3|
|4 4|
 

Тогда «вырожденного размер вещание» вещает нулевая размерность матрицы 1х2, чтобы соответствовать соответствующей Размерности правой стороны:

 |1 1| + |5 6|     |6  7|
|2 2| + |5 6|  =  |7  8|
|3 3| + |5 6|     |8  9|
|4 4| + |5 6|     |9 10|
 

Более сложный пример представляет собой матрицу размером 1х2 добавлен в массив размером 4x3x1, используя размеры вещательными (1, 2). Первая матрица 1х2 транслируются до ранга 3 с использованием размеров широковещательных производит промежуточный массив Mx1x2, где размер размера М определяется размером больше операнда (массив 4x3x1) получение 4x1x2 промежуточного массива. М в размерности 0 (самая левая размерность), так как размеры 1 и 2 сопоставлены с размерами исходной матрицы 1х2 в качестве размерности вещания являются (1, 2). Этот промежуточный массив может быть добавлен к матрице с использованием 4x3x1 вещания вырожденных измерений для получения результата 4x3x2 массива.