Ich habe Numpys Tensordot nicht katastrophal verstanden, aber ich habe das Gefühl, dass ich es verstehen könnte, wenn ich verschiedene Dinge recherchiere, also werde ich es mir notieren.
>>> import numpy as np
>>> a = np.arange(12).reshape(2,3,2)
>>> b = np.arange(48).reshape(3,2,8)
>>> c = np.tensordot(a,b, axes=([1,0], [0,1]))
>>> a
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]]])
>>> b
array([[[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15]],
[[16, 17, 18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29, 30, 31]],
[[32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47]]])
>>> c
array([[ 800, 830, 860, 890, 920, 950, 980, 1010],
[ 920, 956, 992, 1028, 1064, 1100, 1136, 1172]])
Das Bild ist, dass die Elemente in der Reihenfolge der zweiten Dimension und der ersten Dimension der Matrix a aufgenommen werden und eine Zwischenmatrix zur Berechnung erstellt wird. Die Form der Zwischenmatrix ist die Nummer der zweiten Dimension x die Nummer der ersten Dimension.
In diesem Fall ist es ein Bild, dass eine Zwischenmatrix mit einer Form von 3 (Nummer der zweiten Dimension) x 2 (Nummer der ersten Dimension) erstellt wird.
Nehmen Sie in jedem Fall zuerst das obere linke Element auf.
Welches Element soll als nächstes aufgenommen werden? Da es in der Reihenfolge der zweiten Dimension und der ersten Dimension aufgenommen wird, Nehmen Sie zuerst in der Reihenfolge der zweiten Dimension auf.
Es wird so sein, wenn es in der Reihenfolge der zweiten Dimension aufgenommen wird.
Außerdem ist welches Element als nächstes aufzunehmen Ich habe es also in der Reihenfolge der zweiten Dimension aufgenommen Springe als nächstes zur "unteren" Insel in der Reihenfolge der ersten Dimension.
Nehmen Sie wie zuvor die Elemente in der zweitdimensionalen Reihenfolge auf der "unteren" Insel auf.
Sie haben jetzt eine 3x2-Matrix.
Machen Sie dasselbe für die "rechte" Seite.
Sie haben jetzt eine zweite 3x2-Matrix.
Als Ergebnis wird die folgende Struktur erstellt.
Das Bild zeigt, dass die Elemente in der Reihenfolge der ersten Dimension und der zweiten Dimension der Matrix b aufgenommen werden und eine Zwischenmatrix zur Berechnung erstellt wird.
Die Form der Zwischenmatrix ist die Nummer der ersten Dimension x die Nummer der zweiten Dimension.
In diesem Fall ist es ein Bild, dass eine Zwischenmatrix mit einer Form von 3 (Nummer der ersten Dimension) x 2 (Nummer der zweiten Dimension) erstellt wird.
Nehmen Sie in jedem Fall zuerst das obere linke Element auf.
Welches Element soll als nächstes aufgenommen werden? Da es in der Reihenfolge der ersten Dimension und der zweiten Dimension aufgenommen wird, Als nächstes müssen Sie zur "unteren" Insel springen.
Es wird so sein, wenn es in der Reihenfolge der ersten Dimension aufgenommen wird.
Außerdem ist welches Element als nächstes aufzunehmen Ich habe es also in der Reihenfolge der ersten Dimension aufgenommen Als nächstes kehren wir in der Reihenfolge der zweiten Dimension zur "obersten" Insel zurück.
Nehmen Sie beim Neustart von ④ die Elemente wie zuvor in der Reihenfolge der ersten Dimension auf.
Sie haben jetzt eine 3x2-Matrix.
Machen Sie dasselbe für den Rest.
Sie sollten acht 3x2-Matrizen haben.
Als Ergebnis wird die folgende Struktur erstellt.
Es wurde zu einer 2-dimensionalen x 8-dimensionalen Matrix kompakt gemacht.
Durch die Berechnung dieser Dimensionen können wir diese Dimensionen reduzieren und gleichzeitig Informationen zu diesen Dimensionen beibehalten.
Es wird auf die Form dieser verbleibenden Abmessungen verdichtet (dh 2 Abmessungen x 8 Abmessungen).
In diesem Sinne scheint eine solche Operation als Kontraktion bezeichnet zu werden. Ich interpretiere es als "Reduktion + Zusammenfassung".
Das Tensorprodukt scheint so zu sein.