Ошибка классификации изображения: неправильно пройдено 5 пунктов, размещение подразумевает 1 - PullRequest
0 голосов
/ 16 мая 2019

Задача: Создание CNN для классификации изображений. Я создаю CNN для классификации изображений. Я хочу сделать 5 классов для моих данных об изображении монеты.

classifier = Sequential()
classifier.add(Convolution2D(32, 3, 3, input_shape = (64, 64, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Convolution2D(32, 3, 3, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Flatten())
classifier.add(Dense(output_dim = 128, activation = 'relu'))
classifier.add(Dense(output_dim = 5, activation = 'softmax'))
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

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,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

training_set = train_datagen.flow_from_directory('5 class/training',
                                                 target_size = (64, 64),
                                                 batch_size = 1,
                                                 class_mode = 'categorical')


test_set = test_datagen.flow_from_directory('5 class/test',
                                            target_size = (64, 64),
                                            batch_size = 1,
                                            class_mode = 'categorical')
classifier.fit_generator(training_set,
                         samples_per_epoch = 8000,
                         nb_epoch = 1,
                         validation_data = test_set,
                         nb_val_samples = 2000)

Я думаю, что в этой части кода нет ошибки, но я подумал, что я должен поместить этот код здесь.

import numpy as np
import pandas as pd


test_set.reset()
pred=classifier.predict_generator(test_set,verbose=1)
#pred = list(map(round,pred))
pred[pred > .5] = 1
pred[pred <= .5] = 0

test_labels = []

for i in range(0,int(203)):
    test_labels.extend(np.array(test_set[i][1]))

print('test_labels')
print(test_labels)

file_names = test_set.filenames

result = pd.DataFrame()
result['file_names']= file_names
result['predictions'] = pred
result['test'] = test_labels   

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(test_labels, pred)
print (cm)

Когда я запускаю приведенный выше код, я получаю сообщение об ошибке типа «Неверное количество пройденных элементов 5, размещение подразумевает 1»

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