web-dev-qa-db-ja.com

Keras 2.0.0でMergeレイヤー(連結機能)を使用するには?

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を使用してマージ/マージレイヤーを使用する方法を知っている人はいますか?前もって感謝します。

9
Pengju Zhao

間違った場所からインポートしていると思います。やったほうがいい:

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])
14

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バージョンが原因の問題です。

1
泡泡糖Lee