wake-up-neo.com

Wie verwende ich die Merge-Ebene (Concat-Funktion) unter Keras 2.0.0?

Ich versuche, die Entity-Einbettung von Modellen mithilfe von Keras zu reproduzieren. Hier ist der github link und der Zweig kaggle. Es gibt eine Python-Datei models.py und die Merge-Ebene wird verwendet.

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

Dieser Code sollte für die alte Version von Keras geeignet sein. Wenn Sie jedoch Keras 2.0.0 mit Tensorflow 1.0.0 als Backend (Python 2.7) verwenden, werden falsche Informationen angezeigt: 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]

Gibt es jemanden, der weiß, wie man dasselbe Ziel (self.model.add(Merge(models, mode='concat'))) erreicht oder wie die Merge/Merge-Ebene mit Keras 2.0.0 verwendet wird? Vielen Dank. 

8
Pengju Zhao

Ich denke, Sie importieren von einem falschen Ort. Du solltest tun:

from keras.layers import Merge

In diesem Github post finden Sie weitere Informationen zu merge/Merge und deren Verwendung.

Aus dem gleichen Github post sind die folgenden zwei Codeausschnitte äquivalent.

Keras 1.2.2-Code:

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

Äquivalenter Keras 2.0.2-Code:

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

In Keras 2.0.4 funktioniert "Zusammenführen" nicht, aber "Zusammenführen" ist in Ordnung, die Verwendung ist wie folgt:

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

der Funktionscode besteht nicht darin, die concat-Funktion zu implementieren, sondern, um den Cosinus-Wert zu erhalten, ist die concat-Funktion ähnlich.

Dieser Code in Keras 2.2.4 funktioniert jedoch nicht. Er gibt einen Fehler des Objekts "Modul" ist nicht aufrufbar. "Dies ist ein Problem, das durch die Keras-Version verursacht wird.

0
泡泡糖Lee