Sự co rút của tenxơ theo quy ước tính tổng của Einstein.
Thực hiện thu gọn và giảm Tensor tổng quát. Mỗi Tensor đầu vào phải có chỉ số đầu vào tương ứng xuất hiện ở phía bên trái được phân tách bằng dấu phẩy của phương trình. Vế phải của phương trình bao gồm chỉ số đầu ra. Chỉ số đầu vào và chỉ số đầu ra phải bao gồm 0 hoặc nhiều nhãn trục được đặt tên và nhiều nhất là một dấu chấm lửng (`...`).
Các nhãn trục được đặt tên có thể là bất kỳ ký tự đơn nào ngoài những ký tự có ý nghĩa đặc biệt, cụ thể là `,.->`. Hành vi của Op này không được xác định nếu nó nhận được một phương trình có định dạng sai; vì việc xác thực được thực hiện tại thời điểm xây dựng biểu đồ nên chúng tôi bỏ qua việc kiểm tra xác thực định dạng trong thời gian chạy.
Lưu ý: Op này không nhằm mục đích được người dùng gọi; thay vào đó người dùng nên gọi trực tiếp tf.einsum
. Nó là một Op ẩn được sử dụng bởi tf.einsum
.
Các thao tác được áp dụng cho (các) đầu vào theo các quy tắc sau:
(a) Đường chéo tổng quát: Đối với các kích thước đầu vào tương ứng với các nhãn trục xuất hiện nhiều lần trong cùng một chỉ số đầu vào, chúng tôi lấy đường chéo tổng quát (`k`-chiều). Ví dụ: trong phương trình `iii->i` với hình dạng đầu vào `[3, 3, 3]`, đường chéo tổng quát sẽ bao gồm các phần tử `3` tại các chỉ số `(0, 0, 0)`, `(1 , 1, 1)` và `(2, 2, 2)` để tạo một Tensor có hình dạng `[3]`.
(b) Rút gọn: Các trục tương ứng với các nhãn chỉ xuất hiện trong một chỉ số đầu vào chứ không xuất hiện trong chỉ số đầu ra được tính tổng trước khi rút gọn Tensor. Ví dụ: trong phương trình `ab,bc->b`, nhãn trục `a` và `c` là nhãn trục rút gọn.
(c) Kích thước lô: Các trục tương ứng với các nhãn xuất hiện trong mỗi chỉ số đầu vào và cả trong chỉ số đầu ra tạo nên các kích thước lô trong phép co Tensor. Nhãn trục không được đặt tên tương ứng với dấu chấm lửng (`...`) cũng tương ứng với kích thước lô. Ví dụ: đối với phương trình biểu thị phép nhân ma trận lô, `bij,bjk->bik`, nhãn trục `b` tương ứng với một thứ nguyên lô.
(d) Sự co lại: Trong trường hợp einsum nhị phân, các trục tương ứng với các nhãn xuất hiện ở hai đầu vào khác nhau (và không ở đầu ra) được co lại với nhau. Xem xét lại phương trình nhân ma trận lô (`bij,bjk->bik`), nhãn trục thu gọn là `j`.
(e) Mở rộng Đường chéo: Nếu chỉ số đầu ra chứa các nhãn trục (rõ ràng) lặp lại, thì thao tác ngược lại của (a) sẽ được áp dụng. Ví dụ: trong phương trình `i->iii` và hình đầu vào `[3]`, đầu ra của hình `[3, 3, 3]` đều là số 0, ngoại trừ đường chéo (tổng quát) được điền bằng các giá trị từ đầu vào. Lưu ý: Thao tác này không được hỗ trợ bởi `np.einsum` hoặc tf.einsum
; nó được cung cấp để cho phép tính toán gradient biểu tượng của tf.einsum
.
Chỉ số đầu ra chỉ được chứa các nhãn xuất hiện ở ít nhất một trong các chỉ số đầu vào. Hơn nữa, tất cả các kích thước ánh xạ tới cùng một nhãn trục phải bằng nhau.
Bất kỳ chỉ số đầu vào và đầu ra nào cũng có thể chứa tối đa một dấu chấm lửng (`...`). Những dấu chấm lửng này được ánh xạ theo các kích thước không tương ứng với bất kỳ nhãn trục được đặt tên nào. Nếu hai đầu vào chứa dấu ba chấm thì chúng sẽ được phát sóng theo [quy tắc phát sóng NumPy tiêu chuẩn](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).
Các kích thước được phát sóng được đặt ở vị trí tương ứng của dấu chấm lửng trong chỉ số đầu ra. Nếu kích thước được phát sóng không trống và chỉ số đầu ra không chứa dấu ba chấm thì lỗi InvalidArgument sẽ xuất hiện.
Hằng số
Sợi dây | OP_NAME | Tên của op này, được biết đến bởi công cụ lõi TensorFlow |
Phương pháp công khai
Đầu ra <T> | asOutput () Trả về tay cầm tượng trưng của tensor. |
tĩnh <T mở rộng TType > Einsum <T> | |
Đầu ra <T> | đầu ra () Tensor đầu ra có hình dạng tùy thuộc vào `phương trình`. |
Phương pháp kế thừa
Hằng số
Chuỗi cuối cùng tĩnh công khai OP_NAME
Tên của op này, được biết đến bởi công cụ lõi TensorFlow
Phương pháp công khai
Đầu ra công khai <T> asOutput ()
Trả về tay cầm tượng trưng của tensor.
Đầu vào của các hoạt động TensorFlow là đầu ra của một hoạt động TensorFlow khác. Phương pháp này được sử dụng để thu được một thẻ điều khiển mang tính biểu tượng đại diện cho việc tính toán đầu vào.
public static Einsum <T> tạo ( Phạm vi phạm vi, Iterable< Toán hạng <T>> đầu vào, Phương trình chuỗi)
Phương thức xuất xưởng để tạo một lớp bao bọc một hoạt động Einsum mới.
Thông số
phạm vi | phạm vi hiện tại |
---|---|
đầu vào | Danh sách 1 hoặc 2 Tensors. |
phương trình | Chuỗi mô tả phép tính Tổng Einstein; ở định dạng np.einsum. |
Trả lại
- một phiên bản mới của Einsum