Verständnis von Tensordot

8

Nachdem ich gelernt habe, einsum zu verwenden, versuche ich nun zu verstehen, wie np.tensordot funktioniert.

Allerdings bin ich ein wenig verloren, insbesondere was die verschiedenen Möglichkeiten für den Parameter axes betrifft.

Um es zu verstehen, habe ich, da ich den Tensor-Kalkül nie praktiziert habe, das folgende Beispiel benutzt:

%Vor%

In diesem Fall, was sind die verschiedenen möglichen np.tensordot und wie würden Sie es manuell berechnen?

    
floflo29 26.01.2017, 09:22
quelle

2 Antworten

11

Die Idee mit tensordot ist ziemlich einfach - Wir geben die Arrays und die entsprechenden Achsen ein, auf denen die Summenreduktionen liegen sollen. Die Achsen, die an der Summenreduzierung beteiligt sind, werden in der Ausgabe entfernt, und alle übrigen Achsen von den Eingangsarrays werden als verschiedene Achsen im Ausgangssignal ausgebreitet, wobei die Reihenfolge der Eingangsarrays beibehalten wird gefüttert.

Sehen wir uns einige Beispielfälle mit einer oder zwei Achsen der Summenreduktionen an und vertauschen auch die Eingabeplätze und sehen, wie die Reihenfolge in der Ausgabe erhalten bleibt.

Ich. Eine Achse der Summenreduktion

Eingaben:

%Vor%

Fall # 1:

%Vor%

Fall Nr. 2 (wie Fall Nr. 1, aber die Eingänge werden getauscht):

%Vor%

II. Zwei Achsen der Summenreduzierung

Eingaben:

%Vor%

Fall # 1:

%Vor%

Fall # 2:

%Vor%

Wir können dies auf so viele Achsen wie möglich ausdehnen.

    
Divakar 26.01.2017, 10:26
quelle
2

tensordot tauscht Achsen und formatiert die Eingaben so, dass np.dot auf 2 2d-Arrays angewendet werden kann. Es tauscht dann und kehrt zum Ziel zurück. Es kann leichter sein zu experimentieren als zu erklären. Es gibt keine spezielle Tensormathematik, sondern nur dot , um in höheren Dimensionen zu arbeiten. tensor bedeutet nur Arrays mit mehr als 2d. Wenn Sie sich mit einsum bereits auskennen, vergleichen Sie am einfachsten die Ergebnisse.

Ein Beispieltest, der auf 1 Achsenpaar summiert

%Vor%

ein anderer, summierend auf zwei.

%Vor%

Wir könnten dasselbe mit dem Paar (1,0) machen. Angesichts der Mischung der Dimensionen glaube ich nicht, dass es eine andere Kombination gibt.

    
hpaulj 26.01.2017 10:04
quelle