Python和PyTorch对比实现多标签softmax + cross-entropy交叉熵损失及反向传播

本文对比介绍了如何使用纯Python和PyTorch实现多标签的softmax结合cross-entropy交叉熵损失函数,并详细阐述了反向传播的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

本文使用纯 Python 和 PyTorch 对比实现多标签softmax + cross-entropy交叉熵损失函数及其反向传播.

相关

原理和详细解释, 请参考文章 :

多标签softmax + cross-entropy交叉熵损失函数详解及反向传播中的梯度求导

系列文章索引 :

https://blog.youkuaiyun.com/oBrightLamp/article/details/85067981

正文

import torch
import numpy as np


class SolfmaxEntropyLoss:
    def __init__(self):
        self.nx = None
        self.ny = None
        self.softmax = None
        self.entropy = None
        self.loss = None
        self.dnx = None

    def __call__(self, nx, ny):
        self.nx = nx
        self
### 使用 PyTorch 实现交叉熵损失函数 在 PyTorch 中,`nn.CrossEntropyLoss()` 是用来计算分类任务中的交叉熵损失的常用方法。此函数结合了 `log_softmax` `nll_loss` (负对数似然损失),适用于多类别的分类问题。 ```python import torch import torch.nn as nn # 创建预测值实际标签张量 predicted_scores = torch.tensor([[0.2, 0.5, 0.3], [0.7, 0.2, 0.1]], dtype=torch.float) actual_labels = torch.tensor([1, 0]) # 定义交叉熵损失函数 criterion_cross_entropy = nn.CrossEntropyLoss() # 计算交叉熵损失 loss_cross_entropy = criterion_cross_entropy(predicted_scores, actual_labels) print(f'Cross Entropy Loss: {loss_cross_entropy.item()}') ``` 这段代码展示了如何创建一个简单的二样本三类别分类器,并通过给定的真实标签来评估模型性能[^1]。 ### 使用 PyTorch 实现均方误差(MSE)损失函数 对于回归任务或者某些特定类型的优化目标来说,可以采用均方误差作为评价标准之一。下面的例子说明了怎样利用 PyTorch 的内置模块轻松定义并应用 MSE 损失: ```python import torch import torch.nn as nn # 创建预测值实际值张量 predicted_values = torch.tensor([0.5, 0.3, 0.2], requires_grad=True) true_values = torch.tensor([0.6, 0.1, 0.2]) # 定义 MSE 损失函数 mse_criterion = nn.MSELoss() # 计算 MSE 损失 mse_loss = mse_criterion(predicted_values, true_values) print(f'Mean Squared Error Loss: {mse_loss.item()}') ``` 这里演示了一个简单的一维向量之间的比较过程,其中包含了前向传播过程中所需的梯度信息设置 (`requires_grad=True`),以便后续能够执行反向传播操作以更新参数权重[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值