refactor(riemann): update embedding extractor pipeline#259
Conversation
|
Надо доработать несколько моментов. Главное исправление: сделать _riemann_spec() допустимой и добавить небольшую проверку пути через реестр по умолчанию: для обычного малого входа diagnostics["source"] должен быть равен "fedot_industrial_operation", а запасной путь не должен включаться. Извлекатель признаков нельзя считать проверенным только по конечным числам на выходе, если запасной путь удовлетворяет тем же утверждениям. Главные замечания по самому коду:
Практическая правка к плану задач |
1. Исправления по замечаниям из прошлого:
2. Основные изменения:
Что было удаленоПолностью удален устаревший класс 3. Архитектура батчевых вычислений и многоканальностьНовый пайплайн спроектирован для сквозной работы с 3D-тензорами. Входной
Шаг 1. Топологическое вложение (Takens' Embedding)Исходный тензор виртуально нарезается на окна через
Шаг 2. Вычисление персистентных диаграммНа вход поступает облако
Шаг 3. Извлечение топологических признаковВместо итераций по точкам диаграммы к тензору Шаг 4. Финальное форматированиеПризнаки возвращаются к исходной размерности батча
4. Следующий шагСледующим этапом предполагаются масштабные эксперименты по использованию и сравнению римановых и топологических признаков между собой и с другими на данных разных доменов. Для топологических признаков также сравнение производительности библиотек вычисления персистентных диаграмм на данных разных объемов и размерностей. |
✅ PR Title Validation PassedThank you for following Conventional Commits! 🎉 Current Title: |
Summary
Сделаны TRE-101 -- TRE-103 и подготовлена ветка к вливанию в актуальную
mainпосле KL/PDL merge.Связанные issues:
Что изменено
Полностью переработан
RiemannExtractorвfedot_ind/core/operation/transformation/representation/manifold/riemann_embeding.py:tangent,mdm,ensemble;estimator,SPD_metric,tangent_metric,centroid_strategy,centroid_type;tangent + class-wise,tangent + median, одномерный вход;logging_paramsи diagnostics генератора.Riemann generator подключен к новой KL-архитектуре main:
riemann_spec()живет вfedot_ind/core/kernel_learning/generators/specs.py;riemann_extractorживет вfedot_ind/core/kernel_learning/generators/registry.py;fedot_ind/core/kernel_learning/generators/adapters.pyостается коротким public index, без возврата старого monolithic-кода.Отработано главное замечание из ревью:
centroid_strategy="global",centroid_type="mean",extraction_strategy="tangent";source == "fedot_industrial_operation", fallback не включается.Обновлен топологический контур:
PointCloudBuilderиPersistenceDiagramsExtractorподдерживают батчевый 3D-вход и стратегииindependent/joint;TopologicalExtractorпереведен на новый pipeline point-cloud -> persistence diagrams -> topological features;TopologicalRidgeForecasterобновлен под новый контур.Дополнительная подготовка к main:
ripserplusplusсделан ленивой optional-зависимостью: модуль импортируется без него, ошибка возникает только при явномbackend="ripser++";n_jobs=1для стабильных локальных и CI smoke-тестов на Windows/sandbox;OperationParametersтеперь создается через keyword-аргументы;task_type="ts_forecasting";TopologicalRidgeForecasterчерезdefault_factory.Что сознательно не закрывается этим PR
Сравнительный benchmark новых римановых признаков против статистических, топологических и baseline-извлекателей не входит в этот merge как блокер. Это лучше вынести в отдельный сравнительный набор перед TRE_SCI-101 -- TRE_SCI-104: датасеты UCR/многомерные задачи, качество, время, память и доля fallback.
GPU-переход топологических признаков также не должен начинаться с прямой замены на одну библиотеку. Для этого нужен отдельный слой: вычислитель диаграмм -> преобразователь диаграмм в признаки -> extractor/forecaster.
Проверки
Локально в
venv_3.9_new:Результат:
67 passed.Также пройдены:
autopep8 --diff --exit-codeпо измененным Python-файлам;py_compileпо измененным Python-файлам сPYTHONPYCACHEPREFIXво временной папке;git diff --check.