交叉熵损失函数(CrossEntropyLoss)

CrossEntropyLoss计算公式为 

 

CrossEntropyLoss带权重的计算公式为(默认weight=None) 

 

多维度计算时:loss为所有维度loss的平均。

 

import torch
import torch.nn as nn
import math
loss = nn.CrossEntropyLoss()
input = torch.randn(1, 5, requires_grad=True)
target = torch.empty(1, dtype=torch.long).random_(5)
output = loss(input, target)

print("输入为5类:")
print(input)
print("要计算loss的类别:")
print(target)
print("计算loss的结果:")
print(output)

first = 0
for i in range(1):
    first -= input[i][target[i]]
second = 0
for i in range(1):
    for j in range(5):
        second += math.exp(input[i][j])
res = 0
res += first +math.log(second)
print("自己的计算结果:")
print(res)
import torch 
import torch.nn as nn 
import math loss = nn.CrossEntropyLoss() 
input = torch.randn(3, 5, requires_grad=True) 
target = torch.empty(3, dtype=torch.long).random_(5) 
output = loss(input, target)

print("输入为3个5类:") 
print(input) 
print("要计算loss的类别:") 
print(target) print("计算loss的结果:") 
print(output) 
first = [0,0,0] 
for i in range(3): 
    first[i] -= input[i][target[i]] 
second = [0,0,0] 
for i in range(3): 
    for j in range(5): 
        second[i] += math.exp(input[i][j]) 
res = 0 
for i in range(3): 
res += first[i] +math.log(second[i]) 
print("自己的计算结果:") 
print(res/3)

 转载:https://blog.csdn.net/tmk_01/article/details/80839810

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值