dejahu的深度学习学习笔记02-softmax分类|Pytorch代码实现

分类任务常用激活函数之nn.Softmax函数参数dim理解(Pytorch) 2)dim=1表示该操作将在输入张量的第1维进行计算,而此张量第1维长度为3,故计算实际是沿着第1维方向,将整个张量划分为2×4个切片,每个切片包含三个元素,并分别对每个切片进行softmax计算,使得这三个元素和为1.3)dim=2表示该操作将在输入张量的第2维进行计算,而此张量第2维长度为4,故计算实际是沿着第2维方向,将整个张量划分为2×3个切片,每个切片包含四个元素,并分别对每个切片进行softmax计算,使得这四个元素和为1.该函数使得输入中所有数值变为。......... 阅读详情

上节博客中我们一起探讨了机器学习中的回归问题,回归问题主要是为了解决连续的问题,生活中还有很多应用场景不是连续的,预测的结果是离散的,比如识别一个垃圾的种类或者是识别一个花卉的具体种类,这种问题如果使用简单的线性回归是达不到目的的,这个时候就需要引入分类去解决,今天我们一起来看下如何去使用Pyotrch实现Softmax分类。

开始之前给大家安利一下我之前写的使用tensorflow2构建物体分类模型的博客,我在博客中详细介绍了数据集收集、模型构建和模型使用三个方面,结合视频你也可以快速构建自己的物体分类模型,快去试试吧!

(2条消息) 手把手教你用tensorflow2.3训练自己的分类数据集_dejahu的博客-优快云博客

回归VS分类

首先我们来看下回归和分类之间的区别,回归估计的是一个连续值,分类预测的是一个离散的类别,我们可以用下面的一张图来清洗展示回归和分类的区别,可以明显看到,分类问题中,输出的个数变多,并且需要学习的参数也变多了。

image-20210704170925790

softmax数学原理

数学表达

介绍softmax之前我们需要先了解输出如何进行编码,对于一般的物体分类问题,我们会采用独热(one hot)编码的形式来表示物体的类别。比如对于手写数字问题,一共有10类数字,我们使用大小为10的向量表示,在该数字的位置上标1,其余位置标0,该向量就是这个数字的标签,比如对于数字1而言,他的one-hot向量就是[0,1,0,0,0,0,0,0,0,0]。数学表示如下:

image-20210704171552347

softmax的主要原理是为了将输出的多个值转化为概率值,以手写字体为例,我们如果能将输出的10个值转化为对应数字的概率值就很容易将其应用在手写数字的预测上,其中这10个浮点数的和为1,每个浮点数表示对应数字的概率值,数学表达如下:

image-20210704171602184

模型构建

和线性回归一样,首先我们需要构建一个模型,然后指定损失函数和优化器,采用随机梯度下降的方式来训练模型,主要的不同点在于损失函数的计算,不同于线性回归中的平方差损失,这里的函数采用交叉熵损失函数,主要是用来衡量两个概率之间的损失,其中样本的标签使用 y y y表示,样本的预测值使用 y ^ \hat{y} y^​表示,则他们之前的损失为:

image-20210704171958728

求导的时候,其梯度就是真实概率和预测概率之间的区别:

image-20210704172031384

常见的损失函数

损失函数在机器学习的模型中用来衡量预测值和真实值的误差,好的损失函数可以准确分析出两者之间的误差,并且能够帮助模型快速地梯度下降到最优解,一个好的损失函数好比是一个老教授,能够准确指出你的不足并帮助你快速调整备考状态。下面介绍几个常用的损失函数,其中黄色表示模型,蓝色表示损失函数,绿色表示梯度,注意梯度的大小,将会对模型参数的优化起到重要的作用。

L1 Loss

image-20210704172632491

L2 Loss

image-20210704172618840

Huber Robust Loss

image-20210704172649563

softmax代码实现

代码的实现部分,我们使用的是大名鼎鼎的mnist数据集,也就是手写数字数据集,这个数据集有28*28大小的灰度图片构成,我们这个使用的还不是卷积神经网络,所以读入的时候只能将二维的图像展开,28*28也就是784,每张图像对应的就是784的向量,输出是10,对应10个数字,代码如下:

import torch
from torch import nn
from d2l import torch as d2l

# 加载数据集
batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

# PyTorch不会隐式地调整输入的形状。
# 因此,我们定义了展平层(flatten)在线性层前调整网络输入的形状
# 784是输入的向量数量,10是输出的向量数量
net = nn.Sequential(nn.Flatten(), nn.Linear(784, 10))


# 初始化权重,标准差是0.01
def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.normal_(m.weight, std=0.01)


net.apply(init_weights)

# 在交叉熵损失函数中传递未归一化的预测,并同时计算softmax及其对数
loss = nn.CrossEntropyLoss()

# 使用学习率为0.1的小批量随机梯度下降作为优化算法
trainer = torch.optim.SGD(net.parameters(), lr=0.1)

num_epochs = 10
# 训练的过程和之前还是一样的,如文中所述,其实就是变了损失函数
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)

image-20210704174529560

可以看到,随着训练的进行,损失在不断下降,准确率在不断提升,最终的准确率大概在0.9左右。

3.6softmax回归网络模型范例.py softmax回归的从零开始实现,手写softmax回归网络模型范例,看完之后让你清晰地了解网络中各层是如何实现的! 立即下载

相关推荐

PyTorch: Softmax多分类实战操作

主要介绍了PyTorch: Softmax多分类实战操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

使用pytorch实现softmax分类问题(详细、易懂)

本篇文章使用pytorch构建模型对《根据船员信息判断是否成功获救的》数据进行训练,也是本人最近课上的作业,文章也记录了自己的一些心得。如果有什么问题,请发布在评论区,本人也很想多了解、多学习,如果对您有帮助的话,请关注我一下呗~

allenkjjf的博客 5795

山景BP10_128DBG开发板ADC_Key驱动

最近在学习山景BP10_128DBG开发板,想使用开发板上的按键。看了看原理图和之前用过的按键好像有点不一样。常见的按键都是判断IO口是否被拉低或拉高来判断按键是否被按下。山景BP10_128DBG开发板上的按键是ADC按键,每个按键按下之后ADC的采样值是不同的,通过ADC采样回来的值进而判断哪个按键按下。这种方式核心思想就是用一个ADC通道来节约IO口,对于IO紧张的芯片是一个不错的解决思路。

weixin_56646002的博客 1310

一文彻底搞懂 Softmax 函数,数学原理分析和 PyTorch 验证

Softmax 函数的数学原理分析和 PyTorch 使用

qq_43799400的博客 5万+

从FPGA工程师视角看CXP-12:如何用Xilinx GTX/GTH收发器搞定一条50Gbps的工业相机数据流?

本文从FPGA工程师视角详细解析了如何利用Xilinx GTX/GTH收发器实现50Gbps的CXP-12工业相机数据流传输。通过协议分析、硬件设计要点和FPGA逻辑实现,帮助开发者高效构建高带宽工业视觉系统,特别适合4K/8K高分辨率图像处理需求。

weixin_42533622的博客 281

MavLink协议入门

MAVLink是一个非常轻量化的开源的消息协议,用于无人机之间的通信以及无人机机载设备之间的通信。

ffffffeiyu的博客 2474

dejahu的深度学习学习笔记04-关于模型训练你需要了解的一些知识

前面我们讨论了线性回归、softmax分类和感知机这些模型,这些模型构建的过程都是有监督的学习,需要借助大量的样本来学习最优的参数,基本原理时通过链式法则使用梯度下降来对参数进行调整。虽然说起来比较简单,但是在实际操作的时候,模型训练需要关注很多细节,包括去模型是否会出现过拟合的现象,模型的超参数是否合理,训练的数据和验证的数据如何进行划分,这都需要进一步来探讨。今天这节我们来一起讨论一下深度学习中模型训练你需要关注的一些细节以及你需要掌握的一些基础知识。 开始之前给大家安利一下我之前写的使用tensorf

dejahu的博客 1082

【微信读书】数据内容接口逆向解析实战:从请求捕获到文本提取

本文详细解析了微信读书网页版数据内容接口的逆向工程实战过程。通过浏览器开发者工具捕获网络请求,定位关键API接口,并深入JavaScript代码分析数据解析逻辑,最终实现从请求模拟到文本提取的完整流程。文章旨在技术学习,探讨Web应用数据交互原理,帮助开发者理解现代前端数据流与编码机制。

game4的博客 420

Pytorch Softmax 多分类

Softmax 0. 环境介绍 环境使用 Kaggle 里免费建立的 Notebook 教程使用李沐老师的 动手学深度学习 网站和 视频讲解 小技巧:当遇到函数看不懂的时候可以按 Shift+Tab 查看函数详解。 1.

负负得正的博客 3329

飞腾D2000开发板实战:手把手教你为UEFI/EDK2驱动SD3077 RTC时钟芯片

本文详细介绍了在飞腾D2000开发板上为UEFI/EDK2环境驱动SD3077 RTC时钟芯片的全流程开发指南。从硬件连接到软件适配,包括引脚复用配置、电源管理优化以及UEFI驱动的深度定制,帮助开发者解决嵌入式系统中的时间同步问题,确保RTC芯片的稳定性和准确性。

weixin_30892037的博客 423

C#与天文观测:Celestia模拟星空的奇幻之旅

Celestia就像一艘穿梭在星海中的小飞船,带领我们遨游宇宙。C#则是这艘飞船的智能导航系统,用代码指挥它飞向任何我们向往的星球或星系。首先,下载并安装Celestia,熟悉其基本操作和功能。创建一个星空目标列表,包括不同的恒星、行星和星系。// 示例:定义观察目标列表new SpaceObject("太阳"),new SpaceObject("月球"),new SpaceObject("火星")

java专栏 1456

PyTorch深度学习实践 Lecture09 Softmax 分类器

《PyTorch深度学习实践》 Lecture 09 Softmax_Classifier 文章目录 Softmax_Classifier 使用 Softmax 作为分类器解决 " 多分类(classification)" 问题;并对Logistic与Softmax比较进行简单的比较,概述了CrossEntropyLoss()函数,最后使用经典数据集:MNIST DataSet 利用PyTorch进行构建网络,相关资料和代码详见:

A_John 的博客 3850

【箱子之字形摆放】python实现-附ChatGPT解析

箱子之形摆放有一批箱子(形式为宁符串,设为str) ,要求将这批箱子按以之形的顺序摆放在宽度为n的空地,请输出箱子的摆放结果。例如:箱子为ABCDEFG,空地宽度为3,摆放结果如图:则输出结果为:AFGBECD输入一行字符串,通过空格分制,前面部分为字母或数字组成的字符串str,表示;后面部分为一个数字n,表示。ABCDEFG 3箱子摆放结果,如题目示例所示AFGBECD。

sinat_29950703的博客 370

pytoch人工神经网络基础:最简单的分类(softmax回归+交叉熵分类)

softmax回归分类原理 对于回归问题,可以用模型预测值与真实值比较,用均方误差这样的损失函数表示误差,迭代使误差最小训练模型。 那么分类问题是否可以用线性回归模型预测呢。最简单的方法就是用softmax方法,softmax的原理: 以in_features个特征,out_features个类别为例。比如用花瓣大小、生长位置、花瓣形状三个因素,判断荷花和梅花,则in_features为3,out_feautures为2。 模型为 y1=x11w11+x12w12+x13w13+b1y2=x21w2

hustlei的专栏 2366

关于React Native Android找不到node的错误

最近,按照官方文档初始化了一个React Native项目,但是在Android端运行的时候,报了如下的一个错误。 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:recordFilesBeforeBundleCommandDebug'. Caused by: org.gradle.process.internal.ExecException: A problem occurred starting p

xiangzhihong8的专栏 4246

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

多分类问题(softmax函数)pytorch

pytorch.手写识别分类

猪猪侠的博客 1009

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Pytorch学习笔记——softmax模型

【代码】Pytorch学习笔记——softmax模型。

qq_44992157的博客 886

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Softmax(分类模型基础)——最全重难点解释及代码

文章目录softmax 从零开始实现1. 图像分类数据集1.1 数据集加载与处理1.2 读取小批量1.3 整合所有组件2. 初始化模型参数3. 定义softmax操作3.1 sum()方法基础3.2 softmax操作4 定义模型5. 定义损失函数6. 分类准确率7. 训练7.2 定义优化器 写在前面:本节内容主要参考自《动手学深度学习》,本文对其中内容进行了补充,并将可能疑问的地方进行了标注和详细的解释。完整代码实现参考【】,简洁实现参考【】。如有疑问和问题欢迎给位交流和指出。 softmax 从零开始实

AI_eNyu的博客 3781

PyTorch: Softmax多分类实战

多分类一种比较常用的做法是在最后一层加softmax归一化,值最大的维度所对应的位置则作为该样本对应的类。本文采用PyTorch框架,选用经典图像数据集mnist学习一波多分类。 MNIST数据集 MNIST 数据集(手写数字数据集)来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST). 训练集 (tra...

AI小白入门的博客 6万+

动手学深度学习(PyTorch实现)(二)--softmax与分类模型

softmax与分类模型1. 关于softmax1.1 基本概念1.2 交叉熵损失函数1.3 模型训练与预测2. 获取Fashion-MNIST训练集2.1 下载数据集2.2 处理数据集2.3 读取数据3. PyTorch实现softmax分类模型3.1 加载相应模块3.2 获取数据和初始化参数3.3 定义网络模型并初始化参数3.4 定义损失函数和优化函数3.5 训练模型 1. 关于softmax...

魔法师の屋子★↓☆ 4379

Pytorch极简入门教程(九)—— softmax分类

# -*- coding: utf-8 -*- """ 在pytorch里,对于多分类问题我们使用 nn.CrossEntropyLoss()和 nn.NLLLoss等来计算softmax交叉熵 """

weixin_44533869的博客 794

Pytorch深度学习(六):Softmax函数实现多分类

Pytorch实现手写数字的图片识别,多分类

qq_40806950的博客 5709

pytorch 预测手写体数字_Pytorch实现的手写数字mnist识别功能完整示例

本文实例讲述了Pytorch实现的手写数字mnist识别功能。分享给大家供大家参考,具体如下:import torchimport torchvision as tvimport torchvision.transforms as transformsimport torch.nn as nnimport torch.optim as optimimport argparse# 定义是否使用GPU...

weixin_39852647的博客 309

【Pytorch神经网络基础理论篇】 02 pytorch环境的安装

1、要注重在真实数据上的模型动手能力 2、要学会给别人讲一遍,充分理解【最高境界】 优快云上有很多就不介绍了 3060+11.3CUDA+Pytorch避坑指南 - 知乎 https://zhuanlan.zhihu.com/p/425203171

小李的研究生学习日记 2058

【pytorch】softmax函数

做过多分类任务的同学一定都知道softmax函数。softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。下图展示了softmax的计算方法: 下面为大家解释一下为什么softmax是这种形式。首先,我们知道概率有两个性质:1)预测的概率为非负数;2)各种预测结果概率之和等于1。softmax就是将在负无穷到正无穷上的预测结果按照这两步转换为概率的。1)将预测结果转化为非负数下图为y=exp(x)的图像,我们可以知道指数函数的值域取值范

weixin_37804469的博客 5196

python torch 自定义神经网络NN

经过epochs次训练,每次epoch训练多个batch_size个样本,Loss逐渐减少。自定义全连接神经网络需要继承Model,重写__init__ 和forward方法。

frt的博客 215
上一篇: dejahu的深度学习学习笔记01-线性回归+Pytorch代码实现
下一篇: dejahu的深度学习学习笔记03-感知机和MLP|Pytorch代码实现
肆十二
肆十二 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄9年 2万+粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆十二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值