Я новичок в нейронных сетях.Я создал нейронную сеть для распознавания ушей 15 целей (классов).Набор данных состоит из 300 изображений и разделен на «обучение», «проверка» и «тест».Для каждого класса в обучении есть 13 изображений, для проверки 3 и для теста 4.
Это структура сети
input_shape = (128, 128, 3)
NUM_CLASSES = 15
BATCH_SIZE = 32
NUM_EPOCHE = 50
classifier = Sequential()
classifier.add(Convolution2D(32, 3, 3, input_shape = input_shape, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Flatten())
classifier.add(Dropout(.5))
classifier.add(Dense(output_dim = 128, activation = 'relu'))
classifier.add(Dropout(.5))
classifier.add(Dense(output_dim = NUM_CLASSES, activation = 'softmax'))
classifier.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
classifier.fit_generator(
training_set,
steps_per_epoch = 6,
epochs = NUM_EPOCHE,
validation_data = validation_set,
validation_steps = 2,
)
Я считаю, что количество эпох составляеточень высокий, но если я пытаюсь уменьшить его, точность уменьшается.В любом случае, когда я пытаюсь предсказать изображение, взятое из тестового набора, в результате я получаю очень маленькие значения.Я не знаю, почему это происходит.Мне нужны значения от 0 до 1. Я не знаю, если это проблема из-за структуры модели или что.
x = image.load_img('dataset_biometria/ear/test_set/15/02_15_06.jpg', target_size=(128,128))
x = image.img_to_array(x)
x = x.reshape((1,) + x.shape)
x = x/255
predictions = classifier.predict_proba(x, batch_size=32, verbose=1)
print(predictions)
Это результат прогноза:
[[5.6861238e-05 2.6912585e-02 5.8105786e-04 1.7117772e-03 1.5182612e-03
1.5271029e-01 3.7086603e-01 3.7264896e-03 1.0833447e-03 8.4272223e-03
2.5183004e-03 5.6781149e-03 3.8425636e-02 3.8328120e-01 2.5028707e-03]]