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'
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With