Kerasを使用して、モデルを埋め込むエンティティを再現しようとしています。 github link を使用し、kaggle
ブランチを使用します。 python file _models.py
_]が1つあり、Merge
レイヤーが使用されます。
_from keras.layers.core import Dense, Dropout, Activation, Merge, Reshape ......
_
self.model.add(Merge(models, mode='concat'))
このコードは、Kerasの旧バージョンでは問題ありませんが、Tensorflow 1.0.0をバックエンドとして使用するKeras 2.0.0を使用すると(python 2.7)、間違った情報があります: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を使用してマージ/マージレイヤーを使用する方法を知っている人はいますか?前もって感謝します。
間違った場所からインポートしていると思います。やったほうがいい:
from keras.layers import Merge
こちらをご覧ください Github postmerge/Merge
およびそれらの使用方法。
同じ 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])
Keras 2.0.4では、「マージ」は機能しませんが、「マージ」は問題ありません。使用方法は次のとおりです。
from keras.layers import merge
m = merge([x1, x2], mod="cos", dot_axes=1)
関数コードはconcat関数を実装するのではなく、コサイン値を取得するためのものであり、concat関数も同様です。
しかし、Keras 2.2.4のこのコードは機能せず、「 'module' object is callable」というエラーがスローされます。これはKerasバージョンが原因の問題です。