-
Notifications
You must be signed in to change notification settings - Fork 906
Open
Description
文档链接&描述 Document Links & Description
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/functional/cross_entropy_cn.html#daimashili
您好,想咨询一个问题,在计算交叉熵损失函数时。假如针对的分类问题是一个3分类的问题,假如样本目前只有1个,假如模型输出三个预测值[0.4, 0.6, 0.8],软标签为[0, 1, 0],在输入到交叉熵损害函数后,use_softmax默认是true,因此首先对输入数据做softmax,得到logits=[0.27,0.33,0.4],之后计算loss,loss = - 1 * (0.33 - log(exp(0.27)) + exp(0.33)) + exp(0.4))) = -0.33 + log(4.19) = 1.1;这是通过文档定义的方式计算得到的结果;
通过交叉熵损失函数实际定义得到结果:
y1 = exp(0.4) / (exp(0.4)+exp(0.6)+exp(0.8));
y2 = exp(0.6) / (exp(0.4)+exp(0.6)+exp(0.8));
y3 = exp(0.8) / (exp(0.4)+exp(0.6)+exp(0.8));
t1 = 0; t2 = 1; t3 =0;
计算交叉熵损失:L = -(log(1-y1) + log(y2) + log(1-y3)) = 1.93
为什么交叉熵损失的计算方式要按照文档中定义的方式来呢,因为按照交叉熵最原始的定义,文档的计算结果和交叉熵定义的计算结果并不一致。
请提出你的建议/提个PR修复这个问题 Please give your suggestion/update a PR to fix it
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels