Эффективное обратное распространение энтропии Pytorch на уровне экземпляра - PullRequest
0 голосов
/ 13 мая 2019

Я хочу обратно распространить потери, рассчитанные с помощью nn.CrossEntropyLoss () на уровне экземпляра, но не на уровне пакета.

Более конкретно, следующий код может достичь цели в pytorch 1.0.1:

output = model(x)
criterion = nn.CrossEntropyLoss(reduction='none')
loss = criterion(output, target)
for i in range(loss.size(0)):
    loss[i].backward()

Хотя вышеупомянутое разделяет почти те же вычислительные затраты, что и обратные потери в уровне партии, показанные ниже:

output = model(x)
criterion = nn.CrossEntropyLoss()
loss = criterion(output, target)
loss.backward()

Обратное распространение на уровне экземпляра обойдется намного дороже.

Итак, я хочу спросить, есть ли более эффективный способ удовлетворить мои требования?

Спасибо большое!

...