Используя взвешенную потерю NLLloss, как определить хорошую потерю в Pytorch - PullRequest
0 голосов
/ 08 марта 2019

У меня есть очень несбалансированные данные, где вес находится в диапазоне [0.0000000012,1], чтобы использовать взвешенную потерю NLL, если я применяю непосредственно эти крайне малые значения веса, я получаю очень малые потери, поэтому, если яхочу получить тот же показатель, что и в случае без веса раньшеКакова стратегия назначения весов?Другими словами, 1. как должен выглядеть мой вес (например, weight all> 0 и т. Д.) 2. Если используется взвешенная потеря NLL, для потери, если мне нужно умножить коэффициент на одно и то же представление (безвес)?

Пример:

import torch
import torch.nn as nn
log_prob = torch.tensor([[-0.0141, -4.2669]])
target = torch.tensor([0])
criterion = nn.NLLLoss()

criterion(log_prob, target)

out: tensor(0.0141)

log_prob = torch.tensor([[-0.0141, -4.2669]])
target = torch.tensor([0])
weight = torch.tensor([0.00009, 0.99991])
criterion = nn.NLLLoss(weight=weight,  reduction='sum')

criterion(log_prob, target)

out: tensor(1.2690e-06)

Так во второмслучай, как узнать, что моя сеть хорошо обучена, так как величина потерь уже очень мала.Кроме того, если используется взвешенная потеря NLL, значение скорости обучения также должно быть затронуто?если да, то как установить значение скорости обучения

Спасибо

...