gpt4 book ai didi

python - 交叉熵对具有相同分布的向量产生不同的结果

转载 作者:行者123 更新时间:2023-12-05 02:35:33 26 4
gpt4 key购买 nike

<分区>

我正在训练一个神经网络来区分三个类别。当然,我选择了 PyTorch 的 CrossEntropyLoss。在实验过程中,我意识到当将 Softmax 层放在模型末尾时,损失明显更高。所以我决定进一步试验:

import torch
from torch import nn

pred_1 = torch.Tensor([[0.1, 0.2, 0.7]])
pred_2 = torch.Tensor([[1, 2, 7]])
pred_3 = torch.Tensor([[2, 4, 14]])
true = torch.Tensor([2]).long()

loss = nn.CrossEntropyLoss()

print(loss(pred_1, true))
print(loss(pred_2, true))
print(loss(pred_3, true))

这段代码的结果如下:

0.7679
0.0092
5.1497e-05

我还尝试了将输入与某个常数相乘时会发生什么。 losses for different multipliers

多个来源(12)表示损失内置了一个 softmax,但如果是这样的话,我会期望上面的所有示例都返回相同的损失,这显然不是事实并非如此。

这提出了以下问题:如果更大的输出导致更低的损失,网络是否会优化以输出更大的值,从而使损失曲线倾斜?如果是这样,似乎 Softmax 层可以解决这个问题。但由于这会导致总体损失更高,因此由此产生的损失实际上有多大用处?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com