почему моя модель дает такой же результат даже после> 93 точности? результат >> массив ([[1., 0., 0.]], dtype = float32) - PullRequest
1 голос
/ 04 марта 2020
train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)


training_set = train_datagen.flow_from_directory('images',
                                                 target_size = (64, 64),
                                                 batch_size = 32,
                                                 class_mode = 'categorical')

#Found 27659 images belonging to 3 classes.



classifier = Sequential()

# Step 1 - Convolution
classifier.add(Convolution2D(32, kernel_size=(3,3), strides=(1,1), input_shape = (64, 64, 3), activation = 'relu'))

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

classifier.add(Convolution2D(64, (3,3), 2, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

classifier.add(Dense(128, activation = 'relu'))

classifier.add(Dense(3, activation = 'softmax'))


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


classifier.fit_generator(training_set,
                         steps_per_epoch = 50,
                         epochs = 30) 

test=image.load_img("./image.png",target_size=(64,64))

test=image.img_to_array(test)

import numpy as np

test=np.expand_dims(test,axis=0)

result=classifier.predict(test)

result

# result is always same as below
#array([[1., 0., 0.]], dtype=float32)


** почему я получаю один и тот же ответ все время, я увеличил эпоху, но все же, почему это действительно происходит, для 2 классов, которые я сделал, но для 3 или более классов это не работает или вы можете дать мне другой код для более чем 3 классов, чтобы предсказать тогда, и другой вопрос, как установить метку на основе нашего каталога, например

images---
    -----cat folder
    -----dog folder
    -----fish folder

, но в маркировке это будет похоже на [0,0 , ..., 222] откуда я знаю, 0 это кошка или собака? **

1 Ответ

0 голосов
/ 05 марта 2020

Я только что попробовал ваш код с двумя классами (кошки и собаки), я изменил ваш код для работы в двоичном режиме, особенно для последнего плотного слоя, softmax для сигмоида и функции потерь, чтобы он работал. Однако я мог видеть, что вы можете сделать это после следующих улучшений: 1. Увеличение разрешения изображения. 2. Увеличение размера сети (как ширины, так и высоты). 3. Добавьте данные проверки, чтобы проверить производительность модели. Всегда полезно полагаться на точность валидации, а не на точность обучения. Если точность проверки хорошая, это означает, что ваша модель может хорошо работать с тестовым набором данных.

Я действительно не думаю, что вам нужно заботиться о маркировке в этом случае, поскольку у вас могут быть данные в соответствующих папках и ImageDataGenerator анализирует эту структуру папок и автоматически создает метки.

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