6 votes

Comment calculer le produit scalaire vectoriel dans Keras ?

J'espère pouvoir calculer un produit scalaire vectoriel dans Keras. En détail, je veux dire que si j'ai deux tenseurs A y B , tous deux de forme (None, 30, 100) je veux calculer le résultat C avec la forme (None, 30, 1) ce qui permettrait de satisfaire

C[:,:,i] = dot(A[:,:,i], B[:,:,i]).

Je me demande si c'est possible, puisque le batch_dot() dans le backend ne retournerait que la forme (None, 30, 30) et n'ont que la relation

C[:,i,j] = dot(A[:,:,i], B[:,:,j])

Mais ce n'est pas ce que je veux.

Merci !

5voto

Daniel Points 2149

Vous pouvez essayer quelque chose comme :

import keras.backend as K

C = K.sum(A * B,axis=-1,keepdims=True)

2voto

El batch_dot vous convient, il suffit d'inclure l'axe correct. En supposant que A.shape = (2,3,4) y B.shape = (2,3,1) vous obtiendrez C qui a une forme (2,4,1) .

C = K.batch_dot(A, B, axes=1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X