2017-03-16 72 views
6

我想重現使用Keras的實體嵌入模型。這是github link並使用kaggle分支。有一個python文件models.pyMerge層被使用。如何在Keras 2.0.0上使用合併圖層(concat函數)?

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

此代碼應該是罰款Keras的舊版本,但使用tensorflow 1.0.0作爲後端(Python 2.7版)使用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 

有關詳細信息,請參閱本Github postmerge/Merge以及如何使用它們。

從相同的Github post,以下兩段代碼是等效的。

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:「合併」圖層已棄用,將於2017年8月後移除。使用'keras.layers.merge'中的圖層,例如'add','concatenate'等 warnings.warn(''合併'圖層已棄用''。 似乎合併圖層已從Keras 2.0中移除,但'keras.layers.merge。 concat' does not exist。 –

+0

yes。我認爲你應該在GitHub上提出問題 – Antoine

+0

你有沒有試過用'keras.layers.merge.Concatenate'? – Nilesh

相關問題