точность проверки высока во время обучения каждой эпохи в CNN, но конечная точность в отчете о классификации очень низкая что это значит?

#python #tensorflow #keras #deep-learning #conv-neural-network

#python #тензорный поток #keras #глубокое обучение #conv-нейронная сеть

Вопрос:

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

 Epoch 1/20
43/43 [==============================] - 157s 4s/step - loss: 16.5535 - accuracy: 0.8844 - val_loss: 1.6308 - val_accuracy: 0.9914

Epoch 2/20
43/43 [==============================] - 153s 4s/step - loss: 9.3576 - accuracy: 0.9647 - val_loss: 1.8470 - val_accuracy: 0.9871

Epoch 3/20
43/43 [==============================] - 152s 4s/step - loss: 4.8507 - accuracy: 0.9720 - val_loss: 2.1491 - val_accuracy: 0.9871

Epoch 4/20
43/43 [==============================] - 153s 4s/step - loss: 2.8917 - accuracy: 0.9772 - val_loss: 0.5409 - val_accuracy: 0.9914

Epoch 5/20
43/43 [==============================] - 153s 4s/step - loss: 1.7138 - accuracy: 0.9831 - val_loss: 0.4102 - val_accuracy: 0.9957

Epoch 6/20
43/43 [==============================] - 153s 4s/step - loss: 2.4398 - accuracy: 0.9801 - val_loss: 5.5315 - val_accuracy: 0.9569

Epoch 7/20
43/43 [==============================] - 153s 4s/step - loss: 4.3175 - accuracy: 0.9661 - val_loss: 0.5032 - val_accuracy: 0.9914

Epoch 8/20
43/43 [==============================] - 152s 4s/step - loss: 1.7567 - accuracy: 0.9816 - val_loss: 0.5169 - val_accuracy: 0.9914

Epoch 9/20
43/43 [==============================] - 153s 4s/step - loss: 1.5359 - accuracy: 0.9786 - val_loss: 0.2652 - val_accuracy: 0.9957

Epoch 10/20
43/43 [==============================] - 153s 4s/step - loss: 0.9022 - accuracy: 0.9897 - val_loss: 0.1173 - val_accuracy: 0.9957

Epoch 11/20
43/43 [==============================] - 153s 4s/step - loss: 0.9991 - accuracy: 0.9801 - val_loss: 0.2755 - val_accuracy: 0.9871
  

когда я запускаю отчет о классификации прогнозов, точность составляет всего 50%. почему это происходит, пожалуйста, кто-нибудь объяснит?

Комментарии:

1. 1) Можете ли вы поделиться своим кодом? Получение точной точности 50% часто является признаком того, что ваш код неисправен. 2) Ваша модель начинает перестраиваться после 10-й эпохи. Лучше использовать раннюю остановку. Вы повторно использовали свои данные проверки из обучающих данных? или вы применили какие-либо шаги предварительной обработки, такие как масштабирование / минимальное максимальное уменьшение / перенаправление?

Ответ №1:

После обучения многих моделей я понял, что точность не очень помогает. Вот почему вы должны сосредоточиться на потерях, а не на точности. В этом случае я бы посоветовал вам снизить скорость обучения, поскольку я вижу, что обучение не очень стабильно. Кроме того, я предполагаю, что вы не используете уровни пакетной нормализации в своей сети, из-за чего вы получаете точность в 50%. Я не могу много сказать, поскольку вы не предоставили много подробностей (например, вы не предоставили свою структуру модели, оптимизатор и функцию потерь, которую вы используете). Но попробуйте снизить скорость обучения и ввести пакетную нормализацию в вашу модель.

Комментарии:

1. спасибо за разъяснение. оптимизатором, который я использовал, был adam. я использовал базовые модели vgg16 и densenet. я внес изменения в последние слои, но точность в отчете о классификации независимо от того, показывала от 50 до 55%. функции потерь, похоже, уменьшаются в последующих epoc, но это не сильно влияет на прогнозы. . является ли пакетная нормализация решением для этого?

2. @AkshayMitra Вы можете попробовать использовать пакетную нормализацию.