Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

tf.tensordot

Wersja TensorFlow 1 Wyświetl źródło na GitHub

Skurcz tensorowy a i b wzdłuż określonych osi i iloczynu zewnętrznego.

Tensordot (znany również jako kontrakcja tensorowa) sumuje iloczyn elementów z a i b przez indeksy określone przez a_axes i b_axes . Listy a_axes i b_axes określają te pary osi, wzdłuż których należy b_axes tensory. Oś a_axes[i] a musi mieć ten sam wymiar co oś b_axes[i] of b dla wszystkich i w range(0, len(a_axes)) . Listy a_axes i b_axes muszą mieć identyczną długość i składać się z unikalnych liczb całkowitych, które określają prawidłowe osie dla każdego z tensorów. Dodatkowo produkt zewnętrzny jest obsługiwany przez przechodzące axes=0 .

Ta operacja odpowiada numpy.tensordot(a, b, axes) .

Przykład 1: Gdy a i b są macierzami (rząd 2), axes = 1 przypadku axes = 1 są równoważne mnożeniu macierzy.

Przykład 2: Gdy a i b są macierzami (rząd 2), axes = [[1], [0]] przypadku axes = [[1], [0]] są równoważne mnożeniu macierzy.

Przykład 3: Gdy a i b są macierzami (rząd 2), axes=0 przypadku axes=0 dają iloczyn zewnętrzny, tensor rzędu 4.

Przykład 4: Załóżmy, że \ (a_ {ijk} \) i \ (b_ {lmn} \) reprezentują dwa tensory rzędu 3. Następnie contract(a, b, [[0], [2]]) jest porządkiem 4 tensor \ (c_ {jklm} \), którego wpis odpowiadający indeksom \ ((j, k, l, m) \) jest dany przez:

\ (c_ {jklm} = \ sum_i a_ {ijk} b_ {lmi} \).

Ogólnie rzecz biorąc, order(c) = order(a) + order(b) - 2*len(axes[0]) .

a Tensor typu float32 lub float64 .
b Tensor tego samego typu co a .
axes Albo skalarne N lub lista lub int32 Tensor kształtu [2, k]. Jeśli osie są skalarem, zsumuj ostatnie N osi a i pierwsze N ​​osi b w kolejności. Jeśli osie są listą lub Tensor pierwszy i drugi wiersz zawierają zestaw unikatowych liczb całkowitych określających osie, wzdłuż których obliczany jest skurcz, odpowiednio dla a i b . Liczba osi a i b musi być równa. Jeśli axes=0 , oblicza iloczyn zewnętrzny między a i b .
name Nazwa operacji (opcjonalnie).

Tensor tego samego typu co a .

ValueError Jeśli kształty a , b i axes są niekompatybilne.
IndexError Jeśli wartości na osiach przekraczają rangę odpowiedniego tensora.