Trang này được dịch bởi Cloud Translation API.
Switch to English

ngữ nghĩa Broadcasting

Tài liệu này mô tả cách thức ngữ nghĩa phát sóng trong XLA làm việc.

phát thanh truyền hình là gì?

Broadcasting là quá trình làm cho mảng với hình dạng khác nhau có hình dạng tương thích cho phép tính số học. Thuật ngữ được vay mượn từ NumPy phát sóng .

Broadcasting có thể được yêu cầu cho các hoạt động giữa các mảng đa chiều của cấp bậc khác nhau, hoặc giữa các mảng đa chiều với hình dạng khác nhau nhưng tương thích. Hãy xem xét việc bổ sung X+v nơi X là một ma trận (một loạt các cấp bậc 2) và v là một vector (một mảng của bậc 1). Thực hiện bổ sung yếu tố khôn ngoan, XLA cần phải "phát sóng" vector v đến cấp bậc tương tự như ma trận X , bằng cách sao chép v một số lần nhất định. chiều dài của vector có để phù hợp với ít nhất một trong các kích thước của ma trận.

Ví dụ:

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

kích thước của ma trận là (2,3), của vector là (3). Các vector được phát sóng bằng cách tái tạo nó trên hàng để có được:

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

Trong NumPy, điều này được gọi là phát sóng .

Nguyên tắc

Ngôn ngữ XLA là như nghiêm ngặt và rõ ràng càng tốt, tránh ngầm và "ma thuật" tính năng. tính năng này có thể làm cho một số tính toán một chút dễ dàng hơn để xác định, phải trả giá bằng nhiều giả định nướng vào mã người dùng sẽ rất khó khăn để thay đổi trong thời gian dài. Nếu tính năng cần thiết, tiềm ẩn và huyền diệu có thể được bổ sung trong giấy gói client cấp.

Liên quan đến phát thanh truyền hình, thông số kỹ thuật phát thanh truyền hình rõ ràng về hoạt động giữa các mảng của cấp bậc khác nhau là bắt buộc. Điều này khác với NumPy, mà suy luận các đặc điểm kỹ thuật khi có thể.

Phát sóng một mảng thứ hạng thấp lên một mảng cao cấp bậc

Vô hướng luôn luôn có thể được phát sóng trên các mảng mà không có một đặc điểm kỹ thuật rõ ràng kích thước phát sóng. Một hoạt động nhị phân yếu tố khôn ngoan giữa một đại lượng vô hướng và một phương tiện mảng áp dụng các hoạt động với vô hướng cho mỗi phần tử trong mảng. Ví dụ, thêm một đại lượng vô hướng tới một ma trận có nghĩa là tạo ra một ma trận mỗi phần tử trong số đó là một tổng của các đại lượng vô hướng với yếu tố ma trận đầu vào của tương ứng.

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

Hầu hết các nhu cầu phát sóng có thể được chụp bằng cách sử dụng một tuple của kích thước trên một hoạt động nhị phân. Khi đầu vào cho các hoạt động có cấp bậc khác nhau, phát thanh truyền hình này tuple quy định cụ thể mà kích thước (s) trong mảng cấp bậc cao hơn để phù hợp với mảng thứ hạng thấp hơn.

Hãy xem xét ví dụ trước, thay vì thêm một vô hướng tới một (2,3) ma trận, thêm một vector của các kích thước (3) vào một ma trận kích thước (2,3). Nếu không có quy định cụ thể phát sóng, hoạt động này không hợp lệ. Để chính xác yêu cầu bổ sung ma trận vector, xác định kích thước phát sóng là (1), có nghĩa là chiều hướng của vector là phù hợp với chiều 1 của ma trận. Trong 2D, nếu chiều 0 được coi là hàng và kích thước của 1 như cột, điều này có nghĩa rằng mỗi phần tử của vector trở thành một cột của một kích thước phù hợp với số lượng hàng trong ma trận:

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

Như một ví dụ phức tạp hơn, hãy xem xét thêm một vector 3 yếu tố (kích thước (3)) vào một ma trận 3x3 (kích thước (3,3)). Có hai cách phát sóng có thể xảy ra trong ví dụ này:

(1) Một khía cạnh phát sóng trong tổng số 1 có thể được sử dụng. Mỗi phần tử vector trở thành một cột và vectơ được nhân đôi cho mỗi hàng trong ma trận.

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

(2) Một khía cạnh phát sóng từ 0 có thể được sử dụng. Mỗi phần tử vector trở thành một hàng và vector được nhân đôi cho mỗi cột trong ma trận.

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

Các kích thước phát sóng có thể là một tuple mô tả làm thế nào một hình dạng cấp bậc nhỏ hơn được phát sóng vào một hình dạng cấp bậc lớn hơn. Ví dụ, cho một cuboid 2x3x4 và một ma trận 3x4, một tuple phát sóng (1,2) có nghĩa là phù hợp với các ma trận để kích thước 1 và 2 của cuboid.

Đây là loại phát sóng được sử dụng trong các ops nhị phân trong XlaBuilder , nếu broadcast_dimensions lập luận được đưa ra. Ví dụ, xem XlaBuilder :: Add . Trong mã nguồn XLA, loại hình này phát sóng đôi khi được gọi là "InDim" phát sóng.

định nghĩa chính thức

Thuộc tính phát sóng cho phép phù hợp với một mảng thứ hạng thấp hơn để một mảng thứ hạng cao hơn, bởi đó nêu rõ kích thước của mảng thứ hạng cao hơn cho phù hợp. Ví dụ, đối với một mảng với kích thước MxNxPxQ, một vector với kích thước T có thể được xuất hiện như sau:

           MxNxPxQ

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

Trong mỗi trường hợp, T phải là tương đương với kích thước phù hợp của mảng hạng cao hơn. giá trị của vector này sau đó được phát sóng từ kích thước phù hợp với tất cả các không gian khác.

Để phù hợp với một ma trận TxV vào mảng MxNxPxQ, một đôi kích thước phát sóng được sử dụng:

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

Trình tự của kích thước trong tuple phát sóng phải là thứ tự mà kích thước các mảng xếp hạng thấp hơn dự kiến ​​của để phù hợp với kích thước các mảng cấp bậc cao hơn của. Yếu tố đầu tiên trong tuple nói mà chiều trong mảng-rank cao có để phù hợp với chiều 0 trong mảng hạng thấp hơn. Yếu tố thứ hai cho chiều 1, và vân vân. Thứ tự của tham phát sóng phải được tăng nghiêm ngặt. Ví dụ, trong ví dụ trước đó là bất hợp pháp để phù hợp với V để N và T để P; nó cũng là bất hợp pháp để phù hợp với V cho cả P ​​và N.

Broadcasting mảng tương tự-rank với kích thước thoái hóa

Một vấn đề phát sóng liên quan được phát sóng hai mảng có thứ hạng tương tự nhưng kích thước chiều hướng khác nhau. Tương tự như vậy với các quy tắc NumPy, điều này chỉ có thể khi các mảng tương thích. Hai mảng phù hợp khi tất cả các kích thước của chúng là tương thích. Hai kích thước phù hợp nếu:

  • Họ đều bình đẳng, hoặc
  • Một trong số đó là 1 (một "thoái hóa" không gian)

Khi hai mảng tương thích đang gặp phải, hình dạng kết quả có tối đa giữa hai đầu vào ở mỗi chỉ số kích thước.

Ví dụ:

  1. (2,1) và (2,3) phát sóng đến (2,3).
  2. (1,2,5) và (7,2,5) phát sóng đến (7,2,5)
  3. (7,2,5) và (7,1,5) phát sóng đến (7,2,5)
  4. (7,2,5) và (7,2,6) không phù hợp và không thể được phát sóng.

Một trường hợp đặc biệt phát sinh, và cũng được hỗ trợ, nơi mỗi người trong số các mảng đầu vào có một chiều hướng thoái hóa tại một chỉ số khác nhau. Trong trường hợp này, kết quả là một "hoạt động bên ngoài": (2,1) và (1,3) phát sóng đến (2,3). Để biết thêm ví dụ, tham khảo tài liệu hướng dẫn NumPy trên phát thanh truyền hình .

thành phần Broadcast

Phát sóng của một mảng hạng thấp hơn để một mảng thứ hạng cao hơn phát sóng sử dụng kích thước thoái hóa cả hai có thể được thực hiện trong hoạt động nhị phân tương tự. Ví dụ, một vector của các kích thước 4 và một ma trận kích thước 1x2 có thể được thêm vào với nhau sử dụng kích thước quảng bá giá trị của (0):

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

Đầu tiên vector được phát sóng lên đến cấp bậc 2 (ma trận) sử dụng các kích thước quảng bá. Các giá trị duy nhất (0) trong các kích thước quảng bá cho thấy chiều hướng zero trong những trận đấu vector để chiều zero của ma trận. Điều này tạo ra một ma trận kích thước 4xM trong đó giá trị M được chọn để phù hợp với kích thước chiều tương ứng trong mảng 1x2. Do đó, một ma trận 4x2 được sản xuất:

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

Sau đó, "thoái hóa chiều phát sóng" chương trình phát sóng kích thước zero của ma trận 1x2 để phù hợp với kích thước chiều tương ứng của phía bên tay phải:

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

Một ví dụ phức tạp hơn là một ma trận kích thước 1x2 thêm vào một loạt các kích thước 4x3x1 sử dụng tham số phát sóng của (1, 2). Đầu tiên là ma trận 1x2 được phát sóng lên đến cấp bậc 3 sử dụng các kích thước quảng bá để tạo ra một mảng Mx1x2 trung nơi có kích thước chiều M được xác định bởi kích thước của các toán hạng lớn hơn (các mảng 4x3x1) tạo ra một mảng trung gian 4x1x2. M là chiều 0 (trái nhất chiều) vì kích thước 1 và 2 được ánh xạ tới các kích thước của ma trận 1x2 gốc như kích thước quảng bá là (1, 2). mảng trung gian này có thể được thêm vào ma trận 4x3x1 sử dụng phát sóng của kích thước thoái hóa để tạo ra một kết quả mảng 4x3x2.