Класифікація за кількома мітками - Як розрахувати несиметричні ваги для 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.

Ось моя реалізація: