aimclub / FEDOT

Automated modeling and machine learning framework FEDOT
https://fedot.readthedocs.io
BSD 3-Clause "New" or "Revised" License
619 stars 84 forks source link

get predict_data.num_classes if trained_model havent num_classes #1199

Closed ElishaFlacon closed 7 months ago

ElishaFlacon commented 7 months ago

Я заметил, что если обучить CNN модель для классификации изображений, а после сохранить ее и повторно загрузить модель и запустить predict, то выпадает ошибка: AttributeError: 'Sequential' object has no attribute 'num_classes' (у trained_model нет поляnum_classes ) и нужно каждый раз заново обучать модель, а не использовать готовую

Изучив проблему, я понял, что мы можем брать num_classes не только из trained_model, а еще из predict_data. При этом все это нужно обернуть в try catch, чтобы мы взяли num_classes из predict_data только тогда, когда в trained_model нет поля num_classes

Код который использовался для тестирования https://github.com/aimclub/FEDOT/blob/master/examples/simple/classification/image_classification_problem.py

После добавленных изменений модель можно загрузить и сделать predict без каких-либо ошибок

Результаты тестов после добавления изменения остались такими же как и при их запуске после инициализации проекта

codecov[bot] commented 7 months ago

Codecov Report

Attention: 7 lines in your changes are missing coverage. Please review.

Comparison is base (8b16a24) 79.49% compared to head (4caed27) 79.35%.

Files Patch % Lines
...aluation/operation_implementations/models/keras.py 0.00% 7 Missing :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #1199 +/- ## ========================================== - Coverage 79.49% 79.35% -0.14% ========================================== Files 145 145 Lines 10022 10027 +5 ========================================== - Hits 7967 7957 -10 - Misses 2055 2070 +15 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

andreygetmanov commented 7 months ago

Спасибо, что обратил внимание на этот баг и починил его! Решение хорошее, вливаю в мастер.