Viv*_*ian 5 cross-entropy pytorch loss-function pytorch-dataloader
我目前正在与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()
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以一行计算
loss = loss_function(features, targets) # raises RuntimeError: Expected target size [no_of_batches, feature_dim], got [no_of_batches, batch_size]
Run Code Online (Sandbox Code Playgroud)
?
先感谢您!
您可以计算多个交叉熵损失,但您需要自己进行减少。由于交叉熵损失假设特征暗淡始终是特征张量的第二维,因此您还需要首先对其进行排列。
loss_function = torch.nn.CrossEntropyLoss(reduction='none')
loss = loss_function(features.permute(0,2,1), targets).mean(dim=1)
Run Code Online (Sandbox Code Playgroud)
这将产生一个loss
带有条目的张量no_of_batches
。
归档时间: |
|
查看次数: |
4300 次 |
最近记录: |