我试着运行一段代码,但我发现Keras
的合并层有一个问题。我使用的是Python3和keras
2.2.4
这是代码的一部分
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!")
这是错误消息
from keras.layers import LSTM, Embedding, TimeDistributed, Dense, RepeatVector, Merge, Activation
ImportError: cannot import name 'Merge' from 'keras.layers'
发布于 2019-05-27 01:22:37
Keras +2不支持Merge
,需要使用Keras+2的Concatenate
层:
merged = Concatenate()([x1, x2]) # NOTE: the layer is first constructed and then it's called on its input
或者它的等效功能接口concatenate
(以小写c
开头):
merged = concatenate([x1,x2]) # NOTE: the input of layer is passed as an argument, hence named *functional interface*
如果您对其他形式的合并感兴趣,例如加法、减法等,那么您可以使用相关的层。有关合并层的全面列表,请参见documentation。
https://stackoverflow.com/questions/56315726
复制相似问题