2015-11-23 5 views
2

J'essaie de mettre en oeuvre une couche de lambda, où la fonction exécutée par la couche de lambda effectue transpose(P)*x, où x est un tableau avec M rangées et chaque entrée de P est 1/M.Keras/Theano - comment multiplier par le vecteur en couche Lambda

Le problème que je rencontre est que je n'arrive pas à comprendre comment créer un tableau statique avec chaque entrée de P définie sur 1/M. Je sais que je peux obtenir M en utilisant la fonction shape() définie pour les tenseurs de theano, mais je ne sais pas comment créer le vecteur.

Répondre

1

Je pense que vous êtes trop compliquer les choses. Si vous voulez multiplier avec une matrice remplie de constantes, vous pouvez simplement diviser par un scalaire qui est ensuite diffusé sur votre matrice d'entrée, par ex.

Lambda(lambda x: x/M) 

M peut être défini comme

from keras import backend as K 
M = K.shape(x)[0] 

donnant

Lambda(lambda x: x/K.shape(M)[0])