2017-03-16 13 views
6

私は、Kerasを使用してエンティティの埋め込みモデルを再現しようとしています。ここにはgithub linkがあり、kaggleブランチを使用します。 1つのpythonファイルmodels.pyがあり、Merge層が使用されています。Keras 2.0.0でマージレイヤ(コンカット関数)を使用するにはどうすればよいですか?

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

このコードはKerasの古いバージョンのため問題ないはずですが、バックエンド(のpython 2.7)としてtensorflow 1.0.0を使用してKeras 2.0.0を使用して、誤った情報があるでしょう: 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]

同じターゲット(self.model.add(Merge(models, mode='concat')))に到達する方法、またはKeras 2.0.0を使用してマージ/マージレイヤを使用する方法を知っている人はいますか? ありがとうございます。

答えて

10

間違った場所からインポートしていると思います。あなたは実行する必要があります。

from keras.layers import Merge 

merge/Mergeとその使用方法の詳細については、このGithub postを参照してください。

同じGithub postから、コードの2つのスニペットは同等です。

Keras 1.2.2コード:

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

等価Keras 2.0.2コード:

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

は、あなたの答えをありがとう、それと間違って何かがあります。ここにバグがあります。 /Users/pengjuzhao/anaconda/lib/python2.7/site-packages/keras/legacy/layers.py:66:UserWarning: 'Merge'レイヤーは廃止され、08/2017以降に削除されます。代わりに 'keras.layers.merge'のレイヤーを使用してください。 warnings.warn( ''Merge'レイヤは廃止されました') MergeレイヤはKeras 2.0から削除されているようですが、' keras.layers.merge。 –

+0

はい、私はあなたが 'keras.layers.merge.Concatenate'を使ってみたところ、GitHub – Antoine

+0

に問題を提出するべきだと思いますか? – Nilesh

関連する問題