не может построить матрицу путаницы - PullRequest
3 голосов
/ 13 марта 2019

Я хочу построить беспорядочную матрицу для моей модели CNN, там есть код:

classifier = Sequential()


classifier.add(Conv2D(32, (3, 3), input_shape=(64,64, 3), 
activation='relu'))


classifier.add(MaxPooling2D(pool_size=(2, 2)))  

classifier.add(Flatten())
classifier.add(Dense(units=1, activation='sigmoid'))



classifier.compile(optimizer='adam', loss='binary_crossentropy', metrics= 
['accuracy'])


batch_size = 32

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('x1' ,
                                             target_size=(64,64),
                                             batch_size=64,
                                             class_mode='binary')

test_set = test_datagen.flow_from_directory('x2' ,
                                        target_size=(64,64),
                                        batch_size=64,
                                        class_mode='binary')



ep=50

H=classifier.fit_generator(training_set,
                     steps_per_epoch=1204/batch_size,
                     epochs=ep,
                     validation_data=test_set,
                     validation_steps=408/batch_size,
                                     )

validation_steps=408

матрица путаницы:

from sklearn.metrics import confusion_matrix
Y_pred = classifier.predict_generator(test_set,validation_steps//batch_size+1)


y_pred = np.argmax(Y_pred, axis=1)
print('Confusion Matrix')
print(confusion_matrix(test_set.classes, y_pred))

Я получил эту ошибку:

ValueError: Найдены входные переменные с непоследовательным количеством выборок: [408, 792]

Что мне делать?

Ответы [ 2 ]

1 голос
/ 13 марта 2019

test_set и y_pred не имеют одинакового количества наблюдений. Вероятно, количество шагов, которые вы передаете predict_generator, неверно.

Не уверен, какую версию Keras вы используете, но попробуйте Y_pred =classifier.predict_generator(test_set). В более новых версиях пропущенное количество шагов будет возвращать прогнозы для всех изображений.

0 голосов
/ 13 марта 2019

У вас есть

batch_size = 32

но внутри test_set,

batch_size=64

поэтому, когда вы запускаете predict_generator с validation_steps//batch_size+1 шагами, вы используете 32 для создания своих шагов, а 64 для своего генератора.

Вы должны установить 32 или 64

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