Неверное количество классов в Керасе - PullRequest
0 голосов
/ 02 ноября 2018

Keras находит неправильное количество классов в папках с поездами и тестовыми наборами. У меня есть 3 класса, но он продолжает говорить, что есть 4. Кто-нибудь может мне помочь, пожалуйста?

Вот код:

cnn = Sequential()

cnn.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
cnn.add(Dropout(0.5))
cnn.add(MaxPooling2D(pool_size = (2, 2)))


cnn.add(Conv2D(32, (3, 3), activation = 'relu'))
cnn.add(Dropout(0.5))
cnn.add(MaxPooling2D(pool_size = (2, 2)))


cnn.add(Conv2D(64, (3, 3), activation = 'relu'))
cnn.add(Dropout(0.5))
cnn.add(MaxPooling2D(pool_size = (2, 2)))

cnn.add(Conv2D(128, (3, 3), activation = 'relu'))
cnn.add(Dropout(0.5))
cnn.add(MaxPooling2D(pool_size = (2, 2)))

#Full connection
cnn.add(Dense(units = 64, activation = 'relu'))
cnn.add(Dense(units = 64, activation = 'relu'))
cnn.add(Dense(units = 3, activation = 'softmax'))

# Compiling the CNN
cnn.compile(optimizer = OPTIMIZER, loss = 'categorical_crossentropy', metrics = ['accuracy'])


     #Fitting
    from keras.preprocessing.image import ImageDataGenerator

    train_datagen = ImageDataGenerator(rescale = 1./255,
                                       shear_range = 0.2,
                                       zoom_range = 0.2,
                                       horizontal_flip = True)

    test_datagen = ImageDataGenerator(rescale = 1./255)

    training_set = train_datagen.flow_from_directory('dataset/training_set',
                                                     target_size = tgt_size,
                                                     batch_size = batch_size,
                                                     class_mode = 'categorical')

    test_set = test_datagen.flow_from_directory('dataset/test_set',
                                                target_size = tgt_size,
                                                batch_size = batch_size,
                                                class_mode = 'categorical')

И ошибка:

Found 12000 images belonging to 4 classes.
Found 3000 images belonging to 4 classes.

Epoch 1/10
---------------------------------------------------------------------------
ValueError: Error when checking target: expected dense_15 to have 4 dimensions, but got array with shape (3, 4)

EDIT:

Это происходит только с ноутбуком Jupyter в Google Cloud. Когда я использую Spyder локально, он находит правильное количество классов.

1 Ответ

0 голосов
/ 09 ноября 2018

Как вы уже могли выяснить сами, Jupyter создает скрытые папки контрольных точек для целей резервного копирования. Вот почему всегда есть один дополнительный класс (как в папке) при использовании flow_from_directory. Самым простым решением было бы просто удалить эту скрытую папку.

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