PyTorch深度学习实践-P9多分类问题

本文介绍了如何在PyTorch中使用交叉熵损失进行多分类任务,结合MNIST数据集,详细阐述了数据预处理、模型设计、损失函数与优化器的选择,以及训练与测试过程。通过5层神经网络处理28*28的图像,最终目标是将图像分类到0-9的10个类别中。训练过程中观察到损失逐渐减小,但准确率提升有限,原因是全连接网络可能未充分利用图像的局部信息,特征提取对于提高性能至关重要。
摘要由CSDN通过智能技术生成

在Mnist数据集中,我们要得到的输出是0-9,共有十类,这种情况下我们希望输出0-9的概率都大于0,且和为1

 z^{l}是最后一层线性层的输出,

softmax函数:

 

损失函数:LOSS=-Y*logY_hat 

NLLLoss:nagative log likelihood loss 

输入一个 y是真实标签,另一个输入要求是softmax之后求对数

 

实现过程:

 

 在PyTorch中,交叉熵损失全部封装成了Torch.nn.CrossEntropyLoss() 

要求y是长整形张量LongTensor([0])表示第几个标签分类,在构造时直接用CrossEntropyLoss,然后计算loss

 举例~

代码在pytroch中跑不通不知道为啥,参考了别人的代码

import torch

y = torch.LongTensor([2, 0, 1])  # 注意此处是LongTensor
# z_1和z_2是最后一层输出,进入Softmax之前的值,所以每个分类之和不为1
# 每行元素代表对一个对象的分类情况,共三个对象
z_1 = torch.Tensor([[0.1, 0.2, 0.9],
                    [1.1, 0.1, 0.2],
                    [0.2, 2.1, 0.1]])
z_2 = torch.Tensor([[0.9, 0.2, 0.1],
                    [0.1, 0.1, 0.5],
                    [0.2, 0.1, 0.7]])
criterion = torch.nn.CrossEntropyLoss()
print(criterion(z_1, y), criterion(z_2, y))

结果: 

 输出为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值