gpt4 book ai didi

python - pytorch:所有类别的交叉熵之和

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:12 24 4
gpt4 key购买 nike

我想计算每个预测的所有类的交叉熵总和,其中输入是批处理(大小 n),输出是批处理(大小 n)。

enter image description here

最简单的方法是 for 循环(对于 1000 个类):

def sum_of_CE_lost(input):
L = 0
for c in range(1000):
L = L + torch.nn.CrossEntropyLoss(input, c)
return L

但是,速度非常慢。有什么更好的办法呢?我们如何将其并行化为 GPU (CUDA)?

最佳答案

首先,为了使其更快,您需要对其进行矢量化,即使用矩阵。

因此,假设您有 1,000 个样本来计算损失。此外,您的分类问题有 5 个标签。为了计算 CrossEntropyLoss,我们需要一个输入和一个目标。让我们模拟如下:

loss = nn.CrossEntropyLoss() # the loss function
input = torch.randn(1000, 5) #1000 samples and 5 labels' predictions
target = torch.empty(1000, dtype=torch.long).random_(5) # 1000 samples with labels from 0 to 4
loss_value = loss(input, target) # It'll output the loss

我们开始了!现在考虑 1,000 个样本来计算损失。这是最有效的方法。

关于python - pytorch:所有类别的交叉熵之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60311785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com