我想在实例级别而不是批处理级别上反向传播由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()
实例级反向传播将花费更多的时间。
所以我想问,有没有更有效的方式来满足我的要求?
非常感谢!