В этом задании нужно применить пакет TensorFlow для классификации событий (частиц) в эксперименте LHCb.
В данном задании необходимо использовать версию
tensorflow==2.15. Это связано с тем, что в пакетtf2onnxпока не добавили поддержку более новых версийtensorflow.
Используйте набор данных доступный по ссылке https://github.com/hse-aml/hadron-collider-machine-learning/releases/download/Week_2/training.csv.gz, сохраните его в файле training.csv.gz. Загружать этот файл в репозиторий не нужно, он слишком большой.
Разбейте набор данных на тренировочный, валидационный и тестовый в пропорциях по своему усмотрению.
Используйте тренировочный набор для обучения модели, валидационный набор для подбора гиперпараметров, а тестовый для оценки качества финальной модели.
Физические подробности эксперирмента можно узнать в оригинальном исследовании
Дедлайн 12 июня 23:55
В файле particles.py находится пример кода, реализующий многоклассовый классификатор с использованием нейросетей.
Кроме того, код сохраняет готовую модель в переносимом формате ONNX в файл с названием particles.onnx.
В файле
predict.pyсодержится пример кода, как можно использовать готовую модель в формате ONNX. Пример использует тестовый набор данных https://github.com/hse-aml/hadron-collider-machine-learning/releases/download/Week_2/test.csv.gz без меток классов. У проверяющих задание есть файл с метками для независимой оценки качества вашей модели из файлаparticles.onnx.
Ваша задача модифицировать нейросетевую модель таким образом, чтобы показатель ROC AUC для случая «электрон против всего остального» был больше 0.97 на вашей тестовой выборке.
- В файле
roc.pngизобразите графики кривых ROC для каждого типа частицы. - В файле
train.pngизобразите кривую обучения: зависимость значения функции потерь от номера эпохи. - В файле
confusion.pngизобразите матрицу ошибок классификации. - В файле
particles.jsonзапишите метрики качества вашей финальной модели в следующем формате:
{
"test_auc": {
"Electron": 0.01,
"Ghost": 0.01,
"Kaon": 0.01,
"Muon": 0.01,
"Pion": 0.01,
"Proton": 0.01,
}
}
- Не забудьте загрузить файл
particles.onnxс вашей финальной обученной моделью в репозиторий с заданием, вместе с кодом.
Мега-бонусное задание
В файле particles_pytorch.py решите ту же задачу, с примнением pytorch, другого фреймворка для работы с нейронными сетями.
