ValueError: Слой model_2 ожидает 2 входа, но получил 1 входной тензор - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть эта модель, которую я построил, и она выдает ошибку в заголовке model3.add(graph). Из того, что я прочитал и понял, вторая модель, которая model3 здесь, ожидает два входа в model3.add(graph), но она получает только один. Зачем ему нужно 2 входа? Я что-то пропускаю? Пожалуйста, помогите?

inputs3 = model.inputs[:2]  # We are getting all layers EXCEPT last 2 layers
layer_output3 = model.get_layer('Encoder-12-FeedForward-Norm')).output  #this is a layer from a pretrained BERT model
removed_layer = RemoveMask()(layer_output3)    #the previous layer contains masks which are not compatible with a CNN layer in Keras
conv_blocks = [] 
filter_sizes = (2,3,4)
for fx in filter_sizes:
    conv_layer = Conv1D(100, kernel_size=fx,
                                    activation= 'softsign'), data_format='channels_first')(removed_layer)  
    maxpool_layer = MaxPooling1D(pool_size=2)(conv_layer)
    flat_layer = Flatten()(maxpool_layer)
    conv_blocks.append(flat_layer)
conc_layer = concatenate(conv_blocks, axis=1)
restored_layer = RestoreMask()([conc_layer, layer_output3])
graph = Model(input=inputs3, outputs=restored_layer)

model3 = Sequential()
model3.add(graph)
model3.add(Dropout(0.1))
model3.add(Dense(3, activation='softmax'))
model3.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model3.summary()

1 Ответ

0 голосов
/ 13 апреля 2020

Вы комбинируете функциональную модель (график) с последовательной моделью (модель3). Либо конвертируйте обе модели в функциональную модель (например, график), либо конвертируйте обе модели в последовательную модель (например, модель3).

Вы можете найти решение для преобразования функциональной модели в последовательную модель и наоборот здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...