Класифікація за кількома мітками - Як розрахувати несиметричні ваги для BCEWithLogitsLoss у pytorch -
Я намагаюся вирішити одну проблему з багатьма мітками з 270 мітками, і я перетворив цільові мітки в одну гаряче закодовану форму. Я використовую BCEWithLogitsLoss (). Оскільки навчальні дані незбалансовані, я використовую аргумент pos_weight, але я трохи заплутаний.
pos_weight (тензор, необов’язково) - вага позитивних прикладів. Повинен бути вектором, довжина якого дорівнює кількості класів.
Чи потрібно мені вказувати загальну кількість позитивних значень кожної мітки як тензор, або вони означають щось інше під вагами?

3 відповіді 3
Документація PyTorch для BCEWithLogitsLoss рекомендує pos_weight бути співвідношенням між негативними і позитивними рахунками для кожного класу.
Отже, якщо len (набір даних) дорівнює 1000, елемент 0 вашого багатокористувацького кодування має 100 позитивних відліків, тоді елемент 0 pos_weights_vector повинен бути 900/100 = 9. Це означає, що двійкові перехресні втрати будуть поводитися так, ніби набір даних містить 900 позитивних прикладів замість 100.
Ось моя реалізація: