У меня есть 2 класса для моего тренировочного набора: образцы Birds (100 образцов) и no_birds (100).И набор тестов - без маркировки , состоящий из 200 тестовых образцов (смешанных с птицами и no_birds).Для каждого образца в тестовом наборе я намереваюсь классифицировать его как птицу или no_bird, используя CNN с Keras.
import numpy as np
import keras
from keras import backend as K
from keras.models import Sequential
from keras.layers import Activation
from keras.layers.core import Dense, Flatten
from keras.optimizers import Adam
from keras.metrics import categorical_crossentropy
from keras.preprocessing.image import ImageDataGenerator
from keras.layers.normalization import BatchNormalization
from keras.layers.convolutional import *
from sklearn.metrics import confusion_matrix
import itertools
import matplotlib.pyplot as plt
train_path = 'dataset/train_set'
test_path = 'dataset/test_set'
train_batches = ImageDataGenerator().flow_from_directory(train_path, target_size=(224,224), classes=['bird', 'no_bird'], batch_size=10) # bird directory consisting of 100
test_batches = ImageDataGenerator().flow_from_directory(test_path, target_size=(224,224), classes=['unknown'], batch_size=10)
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(224,224,3)),
Flatten(),
Dense(2, activation='softmax'),
])
model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(train_batches, steps_per_epoch=20, validation_data=test_batches, validation_steps=20, epochs=10, verbose=2)
Ошибка, которую я получаю на последнем шаге, такова:
ValueError: Error when checking target: expected dense_1 to have shape (2,) but got array with shape (1,)
Теперь я знаю, что это может быть связано с тем, что test_set имеет только 1 каталог, поскольку он не имеет метки.Поправьте меня если я ошибаюсь.Что я должен сделать, чтобы сделать эту работу?