Точность обучения нейронной сети слишком низкая, и прогнозирование не работает в классификации изображений с Keras - PullRequest
0 голосов
/ 27 января 2020

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

https://www.tensorflow.org/tutorials/keras/classification

И я реализую этот код для своего пользовательского набора данных. У меня 2300 оттенков серого 1024x1024 картинки для модели поезда. Я храню все свои изображения в массиве 3D numpy как train_images и test_images. У меня есть 4 класса, которые являются 0,1,2,3, и я держу их как список, названный "метки".

train_images.shape # returns (2300,1024,1024)
test_images.shape # returns (384,1024,1024)

# normalize values
train_images = train_images / 255.0
test_images = test_images / 255.0

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(1024, 1024)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(4, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(train_images, labels, epochs=10)

Все с руководством почти то же самое. Но моя точность эпохи составляет около 0,4

Epoch 10/10
...
2176/2300 [===========================>..] - ETA: 0s - loss: 9.5701 - acc: 0.4062
2208/2300 [===========================>..] - ETA: 0s - loss: 9.5628 - acc: 0.4067
2240/2300 [============================>.] - ETA: 0s - loss: 9.5485 - acc: 0.4076
2272/2300 [============================>.] - ETA: 0s - loss: 9.5417 - acc: 0.4080
2300/2300 [==============================] - 12s 5ms/step - loss: 9.5307 - acc: 0.4087

Также в руководстве некоторые прогнозы являются дробными, но когда я пытаюсь сделать прогноз, мои модельные прогнозы только 0 или 1. Он говорит, что это% 100 (x), но это неправильно.

predictions = model.predict(test_images)
print(predictions)
# 0 | 0 | 1 | 0
# 0 | 0 | 1 | 0
# 1 | 0 | 0 | 0

ОБНОВЛЕНО

Вот результаты эпохи для 256 * 256 2 классифицированных 100 изображений на класс:

32/200 [===>..........................] - ETA: 0s - loss: 8.5627 - acc: 0.4688
200/200 [==============================] - 0s 317us/step - loss: 8.0590 - acc: 0.5000
Epoch 10/10

Также Я понизил свои классы до 2, но мои прогнозы все еще возвращают% 100 и неправильный класс.


Я не знаю, где я делаю неправильно. Если у вас есть какие-либо советы / идеи, я был бы признателен. Заранее спасибо.

1 Ответ

0 голосов
/ 27 января 2020

40% точность не хорошая. Нужно больше тренироваться. Вы должны изменить масштаб изображения до 128 or 256, чтобы сэкономить время. Также попробуйте увеличить количество эпох до примерно 100 или минимизировать потери как минимум до 1 перед тестированием. Другое дело, дисбаланс классов.

В соответствии с этим https://arxiv.org/abs/1708.07747 ссылка Fashion MNIST содержит 7000 изображений на класс с общим количеством 70000 изображений. Если ваш набор данных имеет дисбаланс классов, который кажется вероятным, вам следует изучить другие метрики и методы.

...