我在 CNN 中使用 keras 和后端的 Tensorflow 在 CNN 中构建了一个多分类。它很好地预测了猫和狗。然而,当涉及到一张没有任何物体的图像时——白色背景图像——它仍然会找到一只狗(假设狗类的概率为 0.75……,猫为 0.24……)。我是一个使用神经网络构建的学习新手。
对不起,如果我问了一个愚蠢的问题,即使我已经搜索了互联网,我也找不到任何答案。
在白色背景图像作为预测方法输入的情况下,我的例外是狗和猫类的概率为 0。
任何建议都会让我很高兴。
以下是我实施培训的方式。
classifier = Sequential()
classifier.add(Conv2D(32, 3, 3, input_shape=(64, 64, 3), activation='relu'))
classifier.add(MaxPool2D(pool_size=(2, 2)))
classifier.add(Conv2D(32, 3, 3, activation='relu'))
classifier.add(MaxPool2D(pool_size=(2, 2)))
classifier.add(Flatten())
classifier.add(Dense(units=128, activation='relu'))
classifier.add(Dense(units=2, activation='softmax'))
# Metrics will be categorical_accuracy
classifier.compile(optimizer='adam', loss='categorical_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)
training_set = train_datagen.flow_from_directory(
'/Users/ozercevikaslan/Desktop/Convolutional_Neural_Networks/dataset/training_set',
target_size=(64, 64),
batch_size=32,
class_mode='categorical')
test_set = test_datagen.flow_from_directory(
'/Users/ozercevikaslan/Desktop/Convolutional_Neural_Networks/dataset/test_set',
target_size=(64, 64),
batch_size=32,
class_mode='categorical')
classifier.fit_generator(
training_set,
steps_per_epoch=8000,
epochs=25,
validation_data=test_set,
validation_steps=2000)