#python #pytorch
#python #pytorch
Вопрос:
В настоящее время я создаю критерий для измерения функции потерь MSE, используя:
loss_fcn = torch.nn.MSELoss()
loss = loss_fcn(logits[getMaskForBatch(subgraph)], labels.float())
Теперь мне нужно изменить его на оценку F1, но, похоже, я не могу найти ни одной библиотеки, которую можно было бы использовать для этого
Комментарии:
1. Почему вам нужно использовать оценку F1?
2. Я вычисляю оценку F1 для определения того, насколько хорошо мое приложение может классифицировать лица @prosti
3. используйте это
4. или, может быть, эта функция F1score от scikit learn scikit-learn.org/stable/modules/generated /…
5. Хорошо, но почему оценка F1? Почему не точность?
Ответ №1:
В частности, в зависимости от задачи вам нужно иметь определенную функцию потерь. Функция потерь, также известная как функция цели, стоимости или ошибки, каким-то образом противоположна функции оптимизации. Функция потерь создает потери, функция оптимизации уменьшает потери. :). Эти две функции должны находиться в равновесии, чтобы мы не перенастроили.
Потери при регрессии PyTorch:
nn.L1Loss
Потеря L1 (MAE)nn.MSELoss
Потеря L2 (MSE)nn.SmoothL1Loss
Huber
Потери в классификации PyTorch:
nn.CrossEntropyLoss
nn.KLDivLoss
nn.NLLLoss
Обучение PyTorch GAN
nn.MarginRankingLoss
Итак, если вы использовали nn.MSELoss
, вам, вероятно, нужно придерживаться регрессии, потому что F1 — это классификационный показатель.
Если вам действительно нужен результат в F1 по какой-либо другой причине, вы можете использовать scikit learn.
Ответ №2:
Зачем вам это нужно делать?
Оценка F1 обычно является оценочным показателем, а не функцией потерь. Более того, чтобы использовать оценку F1 в качестве функции потерь, вы должны убедиться, что она дифференцируема и выпукла (что, я думаю, вероятно, не так, иначе это уже было бы в литературе).
Существует множество функций потерь, которые могут помочь с вашей проблемой, таких как кроссэнтропия, вероятность отрицательного логарифма, потеря CTC и т.д.
Комментарии:
1. поскольку мой лектор сказал мне внедрить оценку баллов F1, что я и сделал, мне просто нужно оптимизировать мою модель, используя оценку f1, а не потерю MSE
2. Как вы говорите, оценка F1 предназначена для оценки. Если ваша проблема связана с классификацией, вам не обязательно использовать MSE loss; вместо этого попробуйте один из перечисленных выше. Если ваша проблема связана с регрессией, вы не можете оценить модель с оценкой F1. Вам следует использовать R2 или MAPE.