Ошибка при проверке цели: ожидалось, что dense_1 будет иметь 4 измерения, но получен массив с формой (20, 1)

#keras #deep-learning

#keras #глубокое обучение

Вопрос:

Я пытаюсь реализовать модель для классификации (двоичной) моей картинки, но у меня возникла эта проблема, кто-нибудь может помочь мне ее решить.Спасибо, ребята ~ вот модель и процесс обучения

 def googLeNet(input = Input(shape=(224, 224, 3))):
    .................
    .................
    ...............
    averagepool1_7x7_s1 = AveragePooling2D(pool_size=(7, 7), padding='same')(inception_5b)
    drop1 = Dropout(rate=0.4)(averagepool1_7x7_s1)
    linear = Dense(units=1, activation='linear')(drop1)
    last = Dense(units=1, activation='softmax')(linear)
    model = Model(input=input, outputs=last)
    return model

-----------------------------------------------------------------------
train_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
    train_dir,
    target_size=(224, 224),
    batch_size=20,
    class_mode='binary'
)

validation_generator = test_datagen.flow_from_directory(
    test_dir,
    target_size=(224, 224),
    batch_size=20,
    class_mode='binary'
)

model = googLeNet()
model.summary()
model.compile(loss='binary_crossentropy',
              optimizer=optimizers.RMSprop(lr=1e-4),
              metrics=['acc']
              )

history = model.fit_generator(train_generator,
                              steps_per_epoch=100,
                              epochs=30,
                              validation_data=validation_generator,
                              validation_steps=50
                              )  

Комментарии:

1. попробуйте train_generator = np.squeeze(train_generator)