Target from InputData in predict mode should be ignored in (almost) all cases
Created by: MorrisNein
- Added test
is_predict_ignores_target
on API, pipeline, model scales. - CNN model now ignores
input_data.target
; - Minor tests refactoring.
Created by: codecov[bot]
Codecov Report
Merging #518 (866f9239) into master (0699becf) will decrease coverage by
0.42%
. The diff coverage is100.00%
.@@ Coverage Diff @@ ## master #518 +/- ## ========================================== - Coverage 78.99% 78.56% -0.43% ========================================== Files 161 161 Lines 11676 11677 +1 ========================================== - Hits 9223 9174 -49 - Misses 2453 2503 +50
Impacted Files Coverage Δ fedot/core/data/data.py 90.17% <100.00%> (ø)
...aluation/operation_implementations/models/keras.py 87.64% <100.00%> (+0.14%)
fedot/core/pipelines/pipeline.py 99.40% <100.00%> (ø)
...lementations/data_operations/ts_transformations.py 69.25% <0.00%> (-16.19%)
fedot/core/data/merge.py 90.72% <0.00%> (-2.58%)
...ation_implementations/data_operations/decompose.py 94.56% <0.00%> (-1.09%)
...edot/core/optimisers/gp_comp/operators/mutation.py 93.98% <0.00%> (ø)
fedot/core/composer/advisor.py 100.00% <0.00%> (+2.00%)
...n/operation_implementations/models/custom_model.py 92.85% <0.00%> (+4.76%)
fedot/core/validation/compose/tabular.py 100.00% <0.00%> (+14.28%)
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update 0699bec...866f923. Read the comment docs.248 248 if self.features is not None: 249 249 new_features = self.features[start:end + 1] 250 250 return InputData(idx=self.idx[start:end + 1], features=new_features, 251 target=self.target[start:end + 1], task=self.task, data_type=self.data_type) 251 target=self.target[start:end + 1] if self.target is not None else None, 252 task=self.task, data_type=self.data_type) Created by: Dreamlone
Здорово, что взялся за этот баг :)
Давай немного заценю изменения. Лучше строку с
self.target is not None else None
перенести повыше, где точно такая же проверка сделана для features. И второе, посмотрел usages, а метод subset_range вообще где-то кроме тестов используется? Просто если не используется, то проблема с обращением к target'у там где не нужно, это не про этот метод
- Last updated by Elizaveta Lutsenko
87 87 88 88 model.compile(**optimizer_params) 89 89 90 model.num_classes = train_data.num_classes Created by: Dreamlone
А разве задание количество классов для классификации не происходит в методе
fit
классаFedotCNNImplementation
(или при старом способе передачи параметры как-то затирались)? См. строку 163 и потом 167. Там вроде бы логика точно такая же, классы читаются только при вызове методаfit
, что по идее не должно приводить к ошибкамПризываю Илью @v1docq проконсультировать по этой CNN модели
Created by: Dreamlone
Комментарий в формате FYI:
Сейчас ещё раз посмотрел как происходит расчет в мастере - запускал examples/image_classification_problem.py, только добавил вот такую строчку
dataset_to_validate.target = None
И всё отработало корректно, - значит Keras модель точно ни при чем. Ну а в целом, не лезу пока что в ревью этого PR, после нашего вчерашнего созвона, думаю, понятно что и как делать и без моих комментариев) (Если появятся вопросы - пиши, или кликай на запрос review)