Einsum

publiczne zajęcia końcowe Einsum

Skrócenie tensora zgodnie z konwencją sumowania Einsteina.

Implementuje uogólnione skracanie i redukcję Tensora. Każdy tensor wejściowy musi mieć odpowiadający indeks wejściowy znajdujący się po lewej stronie równania, oddzielonej przecinkami. Prawa strona równania składa się z wyjściowego indeksu dolnego. Indeks wejściowy i wyjściowy powinien składać się z zera lub większej liczby nazwanych etykiet osi i co najwyżej jednego elipsy („...”).

Nazwane etykiety osi mogą składać się z dowolnego pojedynczego znaku innego niż te, które mają specjalne znaczenie, a mianowicie `,.->`. Zachowanie tego Op jest niezdefiniowane, jeśli otrzyma źle sformatowane równanie; ponieważ weryfikacja odbywa się w czasie tworzenia wykresu, pomijamy sprawdzanie poprawności formatu w czasie wykonywania.

Uwaga: ta operacja nie jest przeznaczona do wywoływania przez użytkownika; zamiast tego użytkownicy powinni bezpośrednio wywołać tf.einsum . Jest to ukryta operacja używana przez tf.einsum .

Operacje są wykonywane na wejściach zgodnie z następującymi zasadami:

(a) Uogólnione przekątne: Dla wymiarów wejściowych odpowiadających etykietom osi pojawiającym się więcej niż raz w tym samym wejściowym indeksie dolnym, przyjmujemy uogólnioną (`k`-wymiarową) przekątną. Na przykład w równaniu „iii->i” z wejściowym kształtem „[3, 3, 3]”, uogólniona przekątna będzie składać się z „3” elementów o indeksach „(0, 0, 0)”, „(1 , 1, 1)` i `(2, 2, 2)`, aby utworzyć tensor kształtu `[3]`.

(b) Redukcja: Osie odpowiadające etykietom występującym tylko w jednym wejściowym indeksie dolnym, ale nie w wyjściowym indeksie dolnym, są sumowane przed skróceniem Tensora. Na przykład w równaniu „ab,bc->b” etykiety osi „a” i „c” są etykietami osi redukcji.

(c) Wymiary partii: Osie odpowiadające etykietom pojawiającym się w każdym z wejściowych indeksów dolnych, a także w wyjściowym indeksie dolnym, tworzą wymiary partii w skróceniu Tensora. Nienazwane etykiety osi odpowiadające wielokropkowi („...”) odpowiadają również wymiarom partii. Na przykład dla równania oznaczającego mnożenie macierzy wsadowej „bij,bjk->bik”, etykieta osi „b” odpowiada wymiarowi wsadowemu.

(d) Skrócenie: W przypadku sumy binarnej osie odpowiadające etykietom występującym na dwóch różnych wejściach (a nie na wyjściu) są względem siebie kurczone. Biorąc pod uwagę ponownie równanie mnożenia macierzy wsadowej („bij,bjk->bik”), etykietą skróconej osi jest „j”.

(e) Rozwiń przekątną: Jeśli wyjściowe indeksy dolne zawierają powtarzające się (jawne) etykiety osi, stosowana jest operacja odwrotna do (a). Na przykład w równaniu „i->iii” i kształcie wejściowym „[3]”, wynikiem kształtu „[3, 3, 3]” są zera, z wyjątkiem (uogólnionej) przekątnej, która jest wypełniona wartości z wejścia. Uwaga: Ta operacja nie jest obsługiwana przez `np.einsum` ani tf.einsum ; zapewnia się możliwość obliczenia symbolicznego gradientu tf.einsum .

Wyjściowe indeksy dolne muszą zawierać wyłącznie etykiety występujące w co najmniej jednym z wejściowych indeksów dolnych. Ponadto wszystkie wymiary przypisane do tej samej etykiety osi muszą być równe.

Dowolny z wejściowych i wyjściowych indeksów dolnych może zawierać co najwyżej pojedynczą wielokropek („...”). Te wielokropki są odwzorowywane na wymiary, które nie odpowiadają żadnej nazwanej etykiecie osi. Jeśli dwa wejścia zawierają wielokropek, są one rozgłaszane zgodnie ze standardowymi [zasadami] nadawania NumPy (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).

Rozgłaszane wymiary są umieszczane w odpowiednim miejscu elipsy w wyjściowym indeksie dolnym. Jeśli rozgłaszane wymiary nie są puste, a wyjściowe indeksy dolne nie zawierają wielokropka, zgłaszany jest błąd InvalidArgument.

Stałe

Strunowy OP_NAME Nazwa tej operacji znana silnikowi rdzenia TensorFlow

Metody publiczne

Wyjście <T>
jako wyjście ()
Zwraca symboliczny uchwyt tensora.
statyczny <T rozszerza TType > Einsum <T>
utwórz (zakres zakresu , wejścia Iterable< Operand <T>>, równanie łańcuchowe)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację Einsum.
Wyjście <T>
wyjście ()
Tensor wyjściowy o kształcie zależnym od „równania”.

Metody dziedziczone

Stałe

publiczny statyczny końcowy ciąg znaków OP_NAME

Nazwa tej operacji znana silnikowi rdzenia TensorFlow

Wartość stała: „Einsum”

Metody publiczne

publiczne wyjście <T> asOutput ()

Zwraca symboliczny uchwyt tensora.

Dane wejściowe operacji TensorFlow są wynikami innej operacji TensorFlow. Ta metoda służy do uzyskania symbolicznego uchwytu reprezentującego obliczenia danych wejściowych.

public static Einsum <T> create (zakres zakresu , wejścia Iterable< Operand <T>>, równanie ciągu)

Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację Einsum.

Parametry
zakres aktualny zakres
wejścia Lista 1 lub 2 tensorów.
równanie Ciąg znaków opisujący operację sumowania Einsteina; w formacie np.einsum.
Zwroty
  • nowa instancja Einsum

publiczne wyjście <T> wyjście ()

Tensor wyjściowy o kształcie zależnym od „równania”.