web-dev-qa-db-fra.com

Comment utiliser la couche de fusion (fonction concat) sur Keras 2.0.0?

J'essaie de reproduire l'entité incorporant des modèles à l'aide de Keras. Voici le lien github et utilisez la branche kaggle. Il existe un fichier python models.py et la couche Merge est utilisée.

from keras.layers.core import Dense, Dropout, Activation, Merge, Reshape ......
self.model.add(Merge(models, mode='concat'))

Ce code devrait convenir à l'ancienne version de Keras, mais si vous utilisez Keras 2.0.0 en utilisant tensorflow 1.0.0 comme serveur principal (python 2.7), vous obtiendrez des informations erronées: Using TensorFlow backend. Traceback (most recent call last): File "/Users/pengjuzhao/Udacity/MLND/entity-embedding-rossmann/test_model.py", line 2, in <module> from models import NN_with_EntityEmbedding File "/Users/pengjuzhao/Udacity/MLND/entity-embedding-rossmann/models.py", line 8, in <module> from keras.layers.core import Dense, Dropout, Activation, Merge, Reshape ImportError: cannot import name Merge [Finished in 1.8s with exit code 1] [Shell_cmd: python -u "/Users/pengjuzhao/Udacity/MLND/entity-embedding-rossmann/test_model.py"] [dir: /Users/pengjuzhao/Udacity/MLND/entity-embedding-rossmann] [path: /usr/bin:/bin:/usr/sbin:/sbin]

Quelqu'un sait-il comment atteindre la même cible (self.model.add(Merge(models, mode='concat'))) ou comment utiliser le calque fusion/fusion à l'aide de Keras 2.0.0? Merci d'avance. 

8
Pengju Zhao

Je pense que vous importez du mauvais emplacement. Tu devrais faire:

from keras.layers import Merge

Voir ceci Github post pour plus de détails sur merge/Merge et comment les utiliser.

Depuis le même Github post , les deux extraits de code suivants sont équivalents.

Keras 1.2.2 code:

from keras.engine import merge
m = merge([init, x], mode='sum')

Code Keras 2.0.2 équivalent:

from keras.layers import add
m = add([init, x])
13

Dans Keras 2.0.4, "Fusionner" n’est pas un travail, mais "fusionner" est correct, son utilisation est la suivante:

from keras.layers import merge
m = merge([x1, x2], mod="cos", dot_axes=1)

le code de fonction ne consiste pas à implémenter la fonction concat mais à obtenir la valeur de cosinus, la fonction concat est similaire.

Mais ce code dans Keras 2.2.4 ne fonctionne pas, il génère une erreur "l'objet 'module' n'est pas appelable", il s'agit d'un problème causé par la version de Keras.

0
泡泡糖Lee