Je n'ai pas compris de façon catastrophique le tensordot de numpy, mais je sens que je pourrais le comprendre en recherchant diverses choses, alors je vais en prendre note.
>>> 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]])
L'image est que les éléments sont pris dans l'ordre de la deuxième dimension et de la première dimension de la matrice a, et une matrice intermédiaire pour le calcul est créée. La forme de la matrice intermédiaire est le numéro de la deuxième dimension x le numéro de la première dimension.
Dans ce cas, c'est une image qu'une matrice intermédiaire de forme 3 (deuxième numéro de dimension) x 2 (premier numéro de dimension) est créée.
Dans tous les cas, prenez d'abord l'élément supérieur gauche.
Quel élément choisir ensuite? Puisqu'il est repris dans l'ordre de la deuxième dimension et de la première dimension, Tout d'abord, prenez dans l'ordre de la deuxième dimension.
Ce sera comme ça une fois ramassé dans l'ordre de la deuxième dimension.
De plus, quel élément choisir ensuite est Je l'ai pris dans l'ordre de la deuxième dimension, donc Ensuite, sautez sur l'île "inférieure" dans l'ordre de la première dimension.
Comme précédemment, ramassez les éléments dans le deuxième ordre dimensionnel sur l'îlot «inférieur».
Vous avez maintenant une matrice 3x2.
Faites de même pour le côté «droit».
Vous avez maintenant une deuxième matrice 3x2.
En conséquence, la structure suivante est créée.
L'image est que les éléments sont pris dans l'ordre de la première dimension et de la seconde dimension de la matrice b, et une matrice intermédiaire pour le calcul est créée.
La forme de la matrice intermédiaire est le numéro de la première dimension x le numéro de la seconde dimension.
Dans ce cas, c'est une image qu'une matrice intermédiaire de forme 3 (premier numéro de dimension) x 2 (deuxième numéro de dimension) est créée.
Dans tous les cas, prenez d'abord l'élément supérieur gauche.
Quel élément choisir ensuite? Puisqu'il est repris dans l'ordre de la première dimension et de la seconde dimension, Ensuite, vous devez sauter sur l'île "du bas".
Ce sera comme ça une fois ramassé dans l'ordre de la première dimension.
De plus, quel élément choisir ensuite est Je l'ai pris dans l'ordre de la première dimension, donc Ensuite, nous reviendrons sur l'île «supérieure» dans l'ordre de la deuxième dimension.
En redémarrant à partir de ④, prenez les éléments dans l'ordre de la première dimension comme précédemment.
Vous avez maintenant une matrice 3x2.
Faites de même pour le reste.
Vous devriez avoir huit matrices 3x2.
En conséquence, la structure suivante est créée.
Il a été rendu compact en une matrice à 2 dimensions x 8 dimensions.
En calculant pour ces dimensions, nous pouvons réduire ces dimensions tout en préservant les informations sur ces dimensions.
Il est compacté à la forme de ces dimensions restantes (c'est-à-dire 2 dimensions x 8 dimensions).
En ce sens, il semble qu'une telle opération s'appelle la contraction. Je l'interprète comme "réduction + résumé".
Le produit tenseur semble être comme ça.