Я новичок в машинном обучении и пытаюсь обучить модель ResNet50 на наборе данных из примерно 100 классов.
Для этого я сначала использую разделенные папки, чтобы разделить данные на обучающий набор, набор проверки и тестовый набор, эти наборы затем сохраняются в отдельных папках. Затем я предварительно обрабатываю данные, определяю свою конкретную модель и обучаю ее на обучающем наборе. Впоследствии я сохраняю модель и оцениваю ее на тестовом наборе. Пока что все работает нормально, и я получил точность ~0,89 на тестовом наборе.
Однако затем я попытался протестировать модель вручную, на том же тестовом наборе. Я начал с самых больших классов, и все работало нормально. Однако для более мелких классов все прогнозы оказались неверными. Как ни странно, большинство этих неправильных предсказаний были одинаковыми, например. большинство изображений в классе 63 были предсказаны как класс 62, большинство изображений в классе 15 были предсказаны как класс 7 и т. д... Так что мне кажется, что модель действительно может делать правильные прогнозы, но связывает их не к тем классам... В целом было слишком много неправильных предсказаний, чтобы достичь точности 0,89.
Я думаю, что могу совершить какую-то довольно глупую ошибку, потому что в этом нет никакого смысла. мои ручные тесты привели к такому другому результату, чем предыдущая оценка модели? Есть ли у кого-нибудь идеи, в чем может быть проблема?
Код, который я использую для проверки прогнозов для папок в моем тестовом наборе вручную, выглядит следующим образом:# Iterate over all images in the folder
for img_file in os.listdir(folder_path):
img_path = os.path.join(folder_path, img_file)
# Load and preprocess the image
img = image.load_img(img_path, target_size=(224, 224))
img_array = image.img_to_array(img)
img_array = np.expand_dims(img_array, axis=0)
img_array = tf.keras.applications.resnet50.preprocess_input(img_array)
# Make predictions
predictions = model.predict(img_array)
predicted_class = np.argmax(predictions)
print(f"Image: {img_file} - Predicted class: {predicted_class}")
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-same-set
Модель ResNet50 имеет высокую точность на тестовом наборе, но плохо работает на том же наборе при тестировании вручную. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение