我目前正在与torch.nn.CrossEntropyLoss
。据我所知,批量计算损失是很常见的。但是,是否有可能计算多个批次的损失?
更具体地说,假设我们给出了数据
import torch
features = torch.randn(no_of_batches, batch_size, feature_dim)
targets = torch.randint(low=0, high=10, size=(no_of_batches, batch_size))
loss_function = torch.nn.CrossEntropyLoss()
有没有一种方法可以一行计算
loss = loss_function(features, targets) # raises RuntimeError: Expected target size [no_of_batches, feature_dim], got [no_of_batches, batch_size]
?
先感谢您!
您可以计算多个交叉熵损失,但您需要自己进行减少。由于交叉熵损失假设特征暗淡始终是特征张量的第二维,因此您还需要首先对其进行排列。
loss_function = torch.nn.CrossEntropyLoss(reduction='none')
loss = loss_function(features.permute(0,2,1), targets).mean(dim=1)
这将导致loss
张量与no_of_batches
条目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)