如何在Keras 2.0.0上使用合并层(concat函数)?

Pen*_*hao 9 python deep-learning keras tensorflow

我正在尝试使用Keras重现实体嵌入模型.这是github链接并使用kaggle分支.有一个python文件,models.py并使用该Merge层.

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 达到相同的目标()或如何使用合并/合并图层?先感谢您.

Par*_*kar 14

我认为你是从错误的位置导入的.你应该做:

from keras.layers import Merge
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息以及如何使用它们,请参阅此Github帖子merge/Merge.

从同一个Github帖子中,下面两段代码是等价的.

Keras 1.2.2代码:

from keras.engine import merge
m = merge([init, x], mode='sum')
Run Code Online (Sandbox Code Playgroud)

等效的Keras 2.0.2代码:

from keras.layers import add
m = add([init, x])
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答,但它有问题.这是错误./Users/pengjuzhao/anaconda/lib/python2.7/site-packages/keras/legacy/layers.py:66:UserWarning:不推荐使用`Merge`图层,将于08/2017之后删除.使用来自`keras.layers.merge`的图层,例如`add`,`concatenate`等.warnings.warn(''Merge`图层已弃用'`.似乎Merge图层已从Keras 2.0中删除但是`keras.layers.merge.concat`方法不存在. (3认同)