J'ai deux tenseurs et une matrice de poids dans Theano. Le tensiomètre A a une dimension (k, 5, 40). Le tenseur B a une dimension (k, 5, 40). La matrice de poids W a une dimension (40, 40). Je voudrais calculer A W B. Quelle est la séquence correcte des opérations de tenseurs Theano pour y parvenir? Notez que k peut varier pendant l'exécution mais que les autres dimensions sont fixes. La sémantique nous voulons de A W B est le suivant:Comment multiplier les tenseurs dans Theano
de A comme Pensez une collection de matrices k() 5,40. Appelez-les A_1, ..., A_k Pensez à B comme une collection de k (5,40) matrices. Appelez-les B_1, ..., B_k. Nous voulons trouver A_ {i} * W * B_ {i}^{T} pour tout i de 1 à k. J'ai essayé d'utiliser theano.tensor.dot mais cela semble assez déroutant.
Notez qu'une méthode non efficace consiste à utiliser la fonction de numérisation. Mais cela rendrait un code parallèle intrinsèquement séquentiel.
Salut Malioboro! J'étais capable de faire ça aussi! Le problème vient avec la deuxième multiplication. La question demande une multiplication à trois voies, pas deux. Nous devons multiplier A et W et ensuite (A * W) et (B) pour obtenir (A * W * B). C'est cette étape A * W * B que je n'obtiens pas. Comment allons-nous de A * W, que vous avez généré dans votre réponse à (A * W) * B. Merci! – Sahil
oh désolé @Sahil, j'ai mal calculé la dimension, j'ai mis à jour ma réponse – malioboro
Salut Malioboro, Dans votre exemple ci-dessus, je veux multiplier le tenseur 3D avec un produit de point de matrice. Comme 'c = T.matrix ('c'), y = np.array ([[1,2], [3,4]])'. Il est très bien avec la boucle en utilisant la fonction de balayage. Mais utiliser T.batched_dot (a, c) donne une valeur correcte avec une erreur comme 'ValueError: get_scalar_constant_value détecté déterministe IndexError:'. Pourriez-vous aider ? – Shyamkkhadka