Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot import name 'Merge' from 'keras.layers'

I have try run a code but I find a problem with merge layers of Keras. I'm using python 3 and keras 2.2.4

This is de code part of 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!")

This is the message of error

from keras.layers import LSTM, Embedding, TimeDistributed, Dense, RepeatVector, Merge, Activation
ImportError: cannot import name 'Merge' from 'keras.layers'
like image 961
JSouza Avatar asked May 26 '19 17:05

JSouza


1 Answers

Merge is not supported in Keras +2. Instead, you need to use Concatenate layer:

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

or it's equivalent functional interface concatenate (starting with lowercase c):

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

If you are interested in other forms of merging, e.g. addition, subtration, etc., then you can use the relevant layers. See the documentation for a comprehensive list of merge layers.

like image 79
today Avatar answered Oct 04 '22 17:10

today