我正在尝试实现将图像和语言模型结合在一起的VQA模型。我的模型定义是:
def VQA_MODEL():
image_feature_size = 4096
word_feature_size = 300
number_of_LSTM = 3
number_of_hidden_units_LSTM = 512
max_length_questions = 30
number_of_dense_layers = 3
number_of_hidden_units = 1024
activation_function = 'tanh'
dropout_pct = 0.5
# Image model
model_image = Sequential()
model_image.add(Reshape((image_feature_size,), input_shape=(image_feature_size,)))
# Language Model
model_language = Sequential()
model_language.add(LSTM(number_of_hidden_units_LSTM, return_sequences=True,input_shape=(max_length_questions, word_feature_size)))
model_language.add(LSTM(number_of_hidden_units_LSTM, return_sequences=True))
model_language.add(LSTM(number_of_hidden_units_LSTM, return_sequences=False))
# combined model
model = Sequential()
model.add(concatenate([model_language.output, model_image.output]))
for _ in range(number_of_dense_layers):
model.add(Dense(number_of_hidden_units, kernel_initializer='uniform', activation= activation_function))
model.add(Dropout(dropout_pct))
model.add(Dense(50, activation='softmax'))
return model
model = VQA_MODEL()
model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
model.fit(train_X, train_Y, batch_size = batch_size, epochs=nb_epoch)
我似乎无法理解如何解决该错误。任何线索将不胜感激。
答案 0 :(得分:0)
该错误是由于以下事实造成的:一个带有小写字母concatenate
的{{1}}不是一个c
,只有一个带有大写字母layer
的{{1}}是一个图层。但是,这也不适用于您的情况。
由于您的组合模型不是Concatenate
,而是使用来自两个并行或不同模型的输入,因此最好使用c
API。以下代码应该起作用:
sequential