2017-03-16 232 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