【发布时间】:2021-10-24 16:50:34
【问题描述】:
我在 pytorch 中实现软交叉熵损失时遇到了一点问题。
我需要为我的模型实现加权软交叉熵损失,这意味着目标值也是概率向量,而不是热向量。
我尝试按照一些论坛中的建议使用 kldivloss,但它不需要权重向量,所以我不能使用它。
总的来说,我对如何使用 pytorch 创建自定义损失函数以及 auto grad 如何遵循自定义损失函数感到有些困惑,尤其是在模型之后我们应用了一些不是数学的函数时,比如映射输出将模型转换为某个向量并计算映射向量的损失等。
【问题讨论】:
-
pytorch 正在使用反向传播来计算损失函数 w.r.t 可训练参数的梯度。这就是done。
-
你的问题太宽泛了,如果你想了解 PyTorch 自动微分背后的机制,那么你应该首先阅读更多相关信息(网上有很多有趣的文章,包括 Shai 链接你的那篇),然后你可以回来问更具体的问题。由于您在问题中提到了
nn.KLDivLoss,如果您只是在寻找内置的softmax 交叉熵,那么nn.CrossEntropyLoss 应该可以完成这项工作! -
在这种情况下不能使用 pytorch 的交叉熵损失,因为 ptorch 交叉熵损失只接受硬标签,这意味着我不能将概率向量作为目标。并且 kldivloss 没有重量选项
标签: python deep-learning pytorch loss-function