mxnet & pytorch 交叉熵损失
1. 对比 pytorch: nn.CrossEntropyLoss() & mxnet: gluon.loss.SoftmaxCrossEntropyLoss()
一般而言默认用法即可:(inputs只是分类器的得分,softmax和log包括在loss里)
pytorch:
d=np.array([[1,2,3],[54,45,2],[67,4,2]]) # inputs l=np.array([0,2,1]) # label print(nn.CrossEntropyLoss(reduction='mean')(torch.Tensor(d),torch.Tensor(l).long())) # 默认求均值 print(nn.CrossEntropyLoss(reduction='none')(torch.Tensor(d),torch.Tensor(l).long())) # 不作任何处理
tensor(39.1359)
tensor([ 2.4076, 52.0001, 63.0000])
mxnet:
d=np.array([[1,2,3],[54,45,2],[67,4,2]]) l=np.array([0,2,1]) print(gluon.loss.SoftmaxCrossEntropyLoss(from_logits=False)(mx.nd.array(d), mx.nd.array(l)).mean()) # 手动求均值 print(gluon.loss.SoftmaxCrossEntropyLoss(from_logits=False)(mx.nd.array(d), mx.nd.array(l))) # 默认不作任何处理
[39.13591] <NDArray 1 @cpu(0)> [ 2.407606 52.000122 63. ] <NDArray 3 @cpu(0)>
2. 对比 pytorch: nn.
KLDivLoss()
& mxnet: gluon.loss.
KLDivLoss()
一般而言默认用法即可:(inputs是经过log_softmax,target无需取log)
pytorch:
pred=np.array([[1,43,2],[45,5,2],[7,14,12]]) target=np.array([[2,43,1],[34,11,2],[13,7,9]]) print(nn.KLDivLoss(reduction='mean')(F.log_softmax(torch.Tensor(pred)), F.softmax(torch.Tensor(target)))) # 默认为mean print(nn.KLDivLoss(reduction='none')(F.log_softmax(torch.Tensor(pred)), F.softmax(torch.Tensor(target)))) # 不作处理
tensor(0.7682) tensor([[ 1.5629e-18, 0.0000e+00, -5.7495e-19], [ 0.0000e+00, 1.7445e-09, 1.3931e-13], [ 6.9624e+00, -1.4309e-02, -3.3963e-02]])
mxnet:
pred=np.array([[1,43,2],[45,5,2],[7,14,12]]) target=np.array([[2,43,1],[34,11,2],[13,7,9]]) print(gluon.loss.KLDivLoss(from_logits=True)(mx.nd.log_softmax(mx.nd.array(pred)), mx.nd.softmax(mx.nd.array(target))).mean()) # 手动求均值 print(gluon.loss.KLDivLoss(from_logits=True)(mx.nd.log_softmax(mx.nd.array(pred)), mx.nd.softmax(mx.nd.array(target)))) # 默认不作处理
[0.7682333] <NDArray 1 @cpu(0)> [1.0047849e-17 5.8190314e-10 2.3046999e+00] <NDArray 3 @cpu(0)>
有个疑惑,这里因为显示的计算了softmax,所以from_logits=True,然而发现将from_logits=False时结果一样。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架