交叉熵方法

交叉熵损失计算示例

交叉熵损失公式

二分类

其中y为label,p^为预测的正类别概率,即在二分类中通过sigmoid函数得出的正类别概率大小。

分类


举例:

criterion = nn.CrossEntropyLoss()

input = torch.randn(3, 5, requires_grad=True)

target = torch.empty(3, dtype=torch.long).random_(5)

loss = criterion(input, target)

上述代码即为求交叉熵损失的示例,输入为随机生成的三个具有5个标签的样本,目标标签为同样随机生成的3个具有唯一正确标签的样本,loss即为函数torch.nn.CrossEntropyLoss()求得的交叉熵损失。

torch.nn.CrossEntropyLoss()内的核心代码如下:

```

batch_loss = 0.

for i in range(input.shape[0]):  # 遍历样本数

    numerator = np.exp(input[i, target[i]])   # 对每个目标标签求指数

    denominator = np.sum(np.exp(input[i, :])) # 每个目标标签所在样本总体指数之和  

    loss = -np.log(numerator / denominator)    # 损失函数对数公式

    batch_loss += loss  # 所有样本损失之和

```

其中,公式中损失函数只有对数log(numerator / denominator)原因是,其他标签默认系数为0,因此代码中省略,因此代码也可写成如下:

```

for i in range(input.shape[0]):

Loss[i]=-input[i, target[i]+sum(math.exp(input[i][:]))

loss = sum(Loss)

```

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容