无法从“keras.layers”导入名称“Merge”

JSo*_*uza 5 python keras keras-layer

我尝试运行代码,但我发现合并Keras. 我正在使用 python 3 和keras2.2.4

这是代码的 de code 部分


import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM, Embedding, TimeDistributed, Dense, RepeatVector, Merge, Activation
from keras.preprocessing import image, sequence
import cPickle as pickle


    def create_model(self, ret_model = False):

        image_model = Sequential()
        image_model.add(Dense(EMBEDDING_DIM, input_dim = 4096, activation='relu'))
        image_model.add(RepeatVector(self.max_length))

        lang_model = Sequential()
        lang_model.add(Embedding(self.vocab_size, 256, input_length=self.max_length))
        lang_model.add(LSTM(256,return_sequences=True))
        lang_model.add(TimeDistributed(Dense(EMBEDDING_DIM)))

        model = Sequential()
        model.add(Merge([image_model, lang_model], mode='concat'))
        model.add(LSTM(1000,return_sequences=False))
        model.add(Dense(self.vocab_size))
        model.add(Activation('softmax'))

        print ("Model created!")

Run Code Online (Sandbox Code Playgroud)

这是错误信息

from keras.layers import LSTM, Embedding, TimeDistributed, Dense, RepeatVector, Merge, Activation
ImportError: cannot import name 'Merge' from 'keras.layers'
Run Code Online (Sandbox Code Playgroud)

tod*_*day 6

MergeKeras +2 不支持。相反,您需要使用Concatenate层:

merged = Concatenate()([x1, x2]) # NOTE: the layer is first constructed and then it's called on its input
Run Code Online (Sandbox Code Playgroud)

或者它是等效的功能接口concatenate(以小写开头c):

merged = concatenate([x1,x2]) # NOTE: the input of layer is passed as an argument, hence named *functional interface*
Run Code Online (Sandbox Code Playgroud)

如果您对其他形式的合并感兴趣,例如加法、减法等,那么您可以使用相关层。有关合并图层的完整列表,请参阅文档