Предиктор (регрессор) времени выполнения нейронной сети на основе её описания
Для запуска необходимо установить зависимости:
pip install -r requirements.txt
Затем запустить файл start.py
В рамках данной задачи реализован генератор моделей, варьирующий следующие параметры:
- число блоков
- конфигурация сверток
- количество слоев
- размер ядра
- padding
- stride
- число линейных слоев
- конфигурация пулинга
- тип (Avg/Max)
- размер ядра
- padding
- stride
- функция активации (ReLU/LeakyReLU)
Для каждой сгенерированной модели производится 5 запусков и сохраняется усредненное время инференса модели.
Полученные модели сохраняются для последующего извлечения признаков:
- количество сверточных слоев
- количество линейных слоев
- количество нелинейных слоев ReLU
- количество нелинейных слоев LeakyReLU
- количество слоев пулинга Avg
- количество слоев пулинга Max
- размерность линейного слоя на выходе
- размерность первого линейного слоя на входе
- Количество сверток с размером ядра 2х2
- Количество сверток с размером ядра 3х3
Список признаков не является исчерпывающим, пайплайн извлечения признаков может быть дополнен в файле src/feature_engineering.py
Итоговый датасет состоит из наборов метапризнаков для 1000 CNN-моделей - data/processed_df
Для предсказания времени выполнения была выбрана модель линейной регрессии Ridge. Метрика качества - Mean Absolute Percentage Error
Значение метрики на кроссвалидации по трем фолдам - [-0.50252446 -0.53983262 -0.67619391] Значение метрики на отложенном наборе данных - 0.5661272519215514