栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

220315-PyTorch中target为浮点数float时的交叉熵loss计算

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

220315-PyTorch中target为浮点数float时的交叉熵loss计算

Pytorch默认的交叉熵函数使用loss=(pred=浮点数, target=整数)的形式

# Example of target with class indices
loss = nn.CrossEntropyLoss()
input = torch.randn(3, 5, requires_grad=True)
target = torch.empty(3, dtype=torch.long).random_(5)
output = loss(input, target)
output.backward()
# Example of target with class probabilities
input = torch.randn(3, 5, requires_grad=True)
target = torch.randn(3, 5).softmax(dim=1)
output = loss(input, target)
output.backward()

但是当target需要为负点数的时候,没法使用loss = nn.CrossEntropyLoss()直接计算, 此处修改损失函数

也可参考标签平滑损失 [3]

def cross_entropy(pred, soft_targets):
    logsoftmax = nn.LogSoftmax()
    return torch.mean(torch.sum(- soft_targets * logsoftmax(pred), 1))


Reference:

    https://discuss.pytorch.org/t/how-should-i-implement-cross-entropy-loss-with-continuous-target-outputs/10720/18https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.htmlhttps://blog.csdn.net/weixin_39529413/article/details/123122330
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号