2017-04-23 1 views
0

Je travaille sur un projet avec lasagne et theano et j'ai besoin de créer une couche personnalisée. La sortie de cette couche ne dépend pas cependant de la taille de l'entrée, mais des valeurs de l'entrée ... Je sais que keras (seulement avec le backend tensorflow) offre la possibilité de couches lambda, et j'ai réussi à écrire une expression qui m'a permis d'avoir la sortie en fonction des valeurs de l'entrée. Mais je ne sais pas comment ou même s'il est possible de le faire en utilisant lasagne et theano. Par exemple: si mon tenseur d'entrée a une taille fixe de 100 valeurs, mais je sais qu'à la fin il pourrait y avoir des valeurs 0, qui n'influencent pas la sortie du réseau, comment puis-je supprimer ces valeurs? valeurs et laissez seulement les valeurs avec des informations vont plus loin à la couche suivante? Je voudrais minimiser les besoins en espace du réseau :)Couche de Lasagne dont la forme de sortie dépend de la valeur d'entrée et non de sa forme d'entrée

Y a-t-il une possibilité d'avoir une couche dans les lasagnes comme ça? Si oui, comment dois-je écrire la méthode get_output_shape_for()? Sinon, je vais passer à keras et tensorflow: D

Merci d'avance!

Répondre

0

Merci à Jan Schlüter pour me fournir la réponse ici:
https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!topic/lasagne-users/ucjNayfhSu0

Pour résumer:
1) Oui, il est possible d'avoir une couche de lasagnes dont la forme de sortie dépend des valeurs d'entrée (au lieu de la forme d'entrée) et
2) Vous devez écrire "None" dans les dimensions qui ont une forme de compilation fixe à chaud (donc les dimensions modifiées qui dépendent des valeurs d'entrée).

En ce qui concerne l'exemple:
Vous pouvez calculer la forme de sortie, puis créer un nouveau tenseur avec la forme de la longueur des entrées non nulles dans le tenseur d'origine, puis remplir le nouveau tenseur avec les valeurs non nulles (par exemple en utilisant la fonction theano.tensor.set_subtensor). Cependant, je ne sais pas si c'est la solution optimale pour atteindre ce résultat ...