Я следую этому руководству, чтобы изучить классификацию изображений с помощью нейронных сетей:
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 и неправильный класс.
Я не знаю, где я делаю неправильно. Если у вас есть какие-либо советы / идеи, я был бы признателен. Заранее спасибо.