Я хотел бы объединить две модели с предварительной подготовкой (DenseNet169 и InceptionV3), или это могут быть любые две. Следовали инструкциям по следующей ссылке, но не сработало. Попробовал и конкатенацию, и конкатенацию, все равно получая ошибку. Я мог где-то ошибиться. Это мой первый вопрос от stackoverflow, и помощь будет принята с благодарностью. https://datascience.stackexchange.com/questions/39407/how-to-make-two-parallel-convolutional-neural-networks-in-keras Первый случай: я пытался без пула
model1 = DenseNet169(weights='imagenet', include_top=False, input_shape=(300,300,3))
out1 = model1.output
model2 = InceptionV3(weights='imagenet', include_top=False, input_shape=(300,300,3))
out2 = model2.output
from keras.layers import concatenate
from keras.layers import Concatenate
x = concatenate([out1, out2]) # merge the outputs of the two models
out = Dense(10, activation='softmax')(x) # final layer of the network
Я получил эту ошибку:
ValueError: Для слоя Concatenate
требуются входные данные с соответствующими формами, за исключением конкатось. Получил входные формы: [(Нет, 9, 9, 1664), (Нет, 8, 8, 2048)]
Второй случай: пробовал со средним пулом, мог объединить, но получил ошибку в процессе обучения
model1 = DenseNet169(weights='imagenet', include_top=False, pooling='avg', input_shape=(300,300,3))
out1 = model1.output
model2 = InceptionV3(weights='imagenet', include_top=False, pooling='avg', input_shape=(300,300,3))
out2 = model2.output
x = concatenate([out1, out2]) # merge the outputs of the two models
out = Dense(10, activation='softmax')(x) # final layer of the network
model = Model(inputs=[model1.input, model2.input], outputs=[out])
model.compile(optimizer=Adam(), loss='categorical_crossentropy',metrics=['accuracy'])
history = model.fit_generator(generator=data_generator_train,
validation_data=data_generator_val,
epochs=20,
verbose=1
)
Ошибка во втором случае: ValueError: Ошибка при проверке ввода модели: список массивов Numpy, передаваемых в вашу модель, не соответствует размеру, ожидаемому моделью. Ожидается увидеть 2 массива (ов), но вместо этого получен следующий список из 1 массива: [array ([[[[0.17074525, 0.10469133, 0.08226486], [0.19852941, 0.13124999, 0.11642157], [0.36528033, 0.3213197, 0.3085095],. .., [0.19082414, 0.17801011, 0.15840226 ...