gpt4 book ai didi

machine-learning - pytorch中的自定义交叉熵损失

转载 作者:行者123 更新时间:2023-11-30 08:34:36 24 4
gpt4 key购买 nike

我已经完成了 pytorch 交叉熵损失函数的自定义实现(因为我需要稍后介绍更多的灵 active )。我打算用它来训练的模型将需要大量的时间来训练,并且可用的资源不能仅用于测试该功能是否正确实现。我已经实现了矢量化实现,因为它运行得更快。

以下是我的代码:

def custom_cross(my_pred,true,batch_size=BATCH_SIZE):
loss= -torch.mean(torch.sum(true.view(batch_size, -1) * torch.log(my_pred.view(batch_size, -1)), dim=1))
return loss

如果您能建议一种更优化的实现,或者如果我在当前的实现中犯了错误,我将非常感激。该模型将使用 Nvidia Tesla K-80 进行训练。

最佳答案

如果您只需要cross entropy您可以利用 PyTorch 定义的优势。

import torch.nn.functional as F
loss_func = F.cross_entropy

suggest a more optimized implementation

PyTorch 具有 F. 损失函数,但您可以使用纯 Python 轻松编写自己的损失函数。PyTorch 将自动为您的函数创建快速 GPU 或矢量化 CPU 代码。

所以,你可以检查 PyTorch 的原始实现,但我认为是这样的:

def log_softmax(x):
return x - x.exp().sum(-1).log().unsqueeze(-1)

here是交叉熵损失的原始实现,现在您可以更改:

nll_loss(log_softmax(input, 1), target, weight, None, ignore_index, None, reduction)

你需要的东西,你就拥有了。

关于machine-learning - pytorch中的自定义交叉熵损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56664770/

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