您传递给模型的Numpy数组列表不是模型期望的大小。MCNN-keras

时间:2019-12-12 08:57:44

标签: python tensorflow keras keras-layer tf.keras

用keras实现多尺度cnn,具有两个conv parrelel层。

from keras.models import Model
main_model = Sequential()
main_model.add(Conv2D(32, kernel_size=3, input_shape=(224, 224, 3),activation='relu'))
#main_model.add(Activation('relu'))
main_model.add(MaxPool2D(strides=(2,2)))
main_model.add(Flatten())

#lower features model - CNN2
lower_model1 = Sequential()
lower_model1.add(Conv2D(32, kernel_size=3, input_shape=( 224, 224,3),activation='relu'))
#lower_model1.add(Activation('relu'))
lower_model1.add(MaxPool2D(strides=(2,2)))
lower_model1.add(Flatten())

#merged model
merged_model = Concatenate(axis=-1)([main_model.output, lower_model1.output])

x = Dense(256, activation='relu', kernel_initializer='normal')(merged_model)
x = Dropout(0.25)(x)
output = Dense(2, activation='softmax')(x)

final_model = Model([main_model.input, lower_model1.input], [output])


final_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

#print 'About to start training merged CNN'
train_datagen = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
train_generator = train_datagen.flow_from_directory("/content/drive/My Drive/DL_2_Dataset/ZhangLabData2/CellData/chest_xray/train", 
                                                    target_size=(224, 224), class_mode='binary')

test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory("/content/drive/My Drive/DL_2_Dataset/ZhangLabData2/CellData/chest_xray/test", 
                                                  target_size=(224, 224), class_mode='binary')

def myGenerator(train_generator,train_generator1):

    while True:

        xy = train_generator.next() #or next(train_generator)
        xy1 = train_generator1.next() #or next(train_generator1)
        yield (xy[0],xy1[0])

final_train_generator = myGenerator(train_generator, train_generator)
final_test_generator  = myGenerator(test_generator, test_generator)
final_model.fit_generator(final_train_generator, samples_per_epoch=512, nb_epoch=10, validation_data=final_test_generator, nb_val_samples=100)

但在执行fit_generator之后:

检查模型输入时出错:传递给模型的Numpy数组列表不是模型预期的大小。预计会看到2个数组,但获得了以下1个数组的列表:[array([[[[[0.5254902,0.5254902,0.5254902],          [0.5254902、0.5254902、0.5254902],          [0.5322508、0.5322508、0.5322508],          ...,          [0.21443921、0.21443921、0.21443921 ...

zip()生成器导致错误,所以我创建了另一个生成器。 生成器中出现错误?

0 个答案:

没有答案