PyTorch深度学习——逻辑斯蒂回归(分类问题)(B站刘二大人P6学习笔记)

详解Pytorch中的torch.nn.MSELoss函,包括对每个参数的分析! 详解Pytorch中的torch.nn.MSELoss函数,包括对每个参数的分析! 阅读详情

目录

1 什么是分类问题?

2 为什么要使用逻辑斯蒂回归?

3 Sigmid Founction(逻辑斯蒂回归函数)

3.1 模型的改变

3.2 损失函数的改变(BCE Loss)

 3.3 代码的改变


1 什么是分类问题?

       分类问题,与之前学习的线性回归问题不同,输出的是分类的概率值,在训练过程中,计算它属于每一个分类的所有概率,其中概率最大的那一种分类,就是我们要的输出结果。
       (在PyTorch中 torchvison包 提供一些主流的数据集,root:下载路径。train:是选择训练集还是测试集。download:是否需要下载,第一次使用需要下载)。
       现在我们将之前的学习问题,修改成分类问题,x表示学习时间,y表示通过率,0表示不通过,1表示通过,这也叫做”二分类问题“


 2 为什么要使用逻辑斯蒂回归?

       在之前我们的学习中,\widehat{y}=wx+b 最终预测的是一个实数,而针对分类问题,我们要把\widehat{y} 输出的实数映射成一个0到1的概率( \widehat{y} \epsilon[0,1] ),这个映射的过程就是本节课所学的逻辑斯蒂回归,逻辑斯蒂回归利用公式\delta (x)=\frac{1}{1+e^{-x}},将实数域的数值映射到 [0.1]范围内的概率。逻辑斯蒂函数的图像如下所示:

 逻辑斯蒂函数在数学界被分为——饱和函数。

计算概率的方式:将原本计算的实数\widehat{y}作为变量输入到逻辑斯蒂函数中,输出的就是映射之后的概率值。


3 Sigmid Founction(逻辑斯蒂回归函数)

     Sigmid Founction需要满一下三个条件:

  1. 函数值有极限
  2. 是单调增函数
  3. 是饱和函数

     Sigmid Founction中最具有典型性的函数就是逻辑斯蒂函数。其他的一些Sigmid Founction如下图所示:

3.1 模型的改变

      之前学习的函数与逻辑斯蒂回归函数的计算图的区别:可以看出逻辑斯蒂回归函数在计算出\widehat{y}之后,还多了一步——通过使用逻辑斯蒂回归函数,把实数值映射到【0,1】的区间中,再输出\widehat{y}。

注:( \delta一般就代表逻辑斯蒂回归)

3.2 损失函数的改变(BCE Loss)

之前学习的函数的损失:计算的是两个实数值的差值,是数轴上的距离。

逻辑斯蒂回归函数的损失:输出的是一个分布,需要计算的是两类分布之间的差异,在统计学中的计算方法有——KL散度,cross-entropy(交叉熵)等,这里我们使用的是cross-entropy(交叉熵)方法。

 交叉熵:例如:现有两个分布 P_{D1}(x) 和 P_{D2}(x) ,此时交叉熵公式为:

                                                     \sum_{x}^ {}P_{D1}(x)ln P_{D2}(x),   x\epsilon (0,n)

      这个公式的值表示两个分布之间的差异的大小,值越大,差异越小。在本例中,在公式前加了负号,目的是为了符合我们的平时思维,使Loss越小,差异越小。

具体解释:在本例中,是二分类问题,y 的取值只能是0或1,\widehat{y}的取值只能 \epsilon [0,1],Loss函数如下:

  1. 当 y=1 时,(1-y)log(1-\widehat{y})=0,此时Loss=-(ylog\widehat{y}),因为y=1,log 函数是单调递增函数,此时 \widehat{y}越大,也就是越接近1,Loss 的值越小,差异越小;
  2. 当 y=0 时,ylog\widehat{y}=0,此时Loss=-((1-y)log(1-\widehat{y})),因为y=0,log 函数是单调递增函数,此时 \widehat{y}越小,也就是越接近0,Loss 的值越小,差异越小;

(有点绕,可以自己多推几次)

最终我们计算的Loss总和公式如下:


补充: 关于交叉熵的详细解释见链接:

一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉_史丹利复合田的博客-优快云博客

 3.3 代码的改变

  • def  __init__没有改变:原因是,\delta (x)(逻辑斯蒂回归函数)是一个没有参数的函数,不需要在构造函数中进行初始化,直接调用就可以;

  • 数据集的改变:因为是二分类问题,y 的取值只能是0或1;

  • 模型的改变:由于PyTorch版本更新,不用再导入torch.nn.functional包,可以直接使用包中的Sigmoid函数进行训练,如下图;

  • 损失函数的改变:不再使用MSE损失函数,改为使用BCE损失函数,由于PyTorch版本更新,将  size_average=False 更改为  reduction='sum'


完整代码如下:

import matplotlib.pyplot as plt
import torch
import matplotlib.pyplot as pl
import numpy as np

x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]])


class LogisticRegressionModel(torch.nn.Module):
    # 构造函数:初始化对象默认调用的函数
    def __init__(self):
        # 必写
        super(LogisticRegressionModel, self).__init__()
        # 构造对象
        self.linear = torch.nn.Linear(1, 1)

    # 前馈任务所要进行的计算
    def forward(self, x):
        y_pred = torch.sigmoid(self.linear(x))
        return y_pred


# 实例化
model = LogisticRegressionModel()

# 损失函数对象
criterion = torch.nn.BCELoss(reduction='sum')
# 优化器对象
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 进行训练
for epoch in range(1000):
    # 计算y hat
    y_pred = model(x_data)
    # 计算损失
    loss = criterion(y_pred, y_data)
    print(epoch, loss.item())

    # 所有权重每次都梯度清零
    optimizer.zero_grad()
    # 反向传播求梯度
    loss.backward()
    # 更新,step()更新函数
    optimizer.step()

# 画图
x = np.linspace(0, 10, 200)
x_t = torch.Tensor(x).view((200, 1))
y_t = model(x_t)
y = y_t.data.numpy()
plt.plot(x, y)
plt.plot([0, 10], [0.5, 0.5], c='r')
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.show()

运行截图如下:

《PyTorch深度学习实践》学习笔记 【4】 《PyTorch深度学习实践》学习笔记 【4】 学习资源: 《PyTorch深度学习实践》完结合集 六、Logistics Regression(逻辑斯蒂回归模型) 虽然它叫做回归模型,但是处理的是分类问题 6.0 回归问题和分类问题 有监督学习: 回归问题 分类问题 二分类 多分类 回归问题:如果我们预测的结果是以连续数字进行表示,即我们将在连续函数中对多个输入变量建立映射关系时,则这样的问题称之为回归问题。 分类问题:如果我们预测的结果是以离散形式表示的,即我们将多个输入变量与多个不同 阅读详情

相关推荐

《PyTorch深度学习实践》B站视频学习笔记

其中in_features和out_features都是指单个样本的维度。是否求均值在每个batch数量都一样时对结果没有影响。torch.optim.SGD()中需要传入的params(参数)是指需要更新的参数,model.parameters()是将模型中所有的参数都取出来。

m0_48610901的博客 965

loss函数中,reduction参数的作用

当输入样本是一个批次(batch)的数据时,通常希望对整个批次的样本计算一个单一的损失值,以便进行梯度计算和参数更新。其中,reduction=‘none’ 表示不进行降维,即返回每个样本的损失值,而不对它们进行求和或平均。可以得到整个批次样本的平均损失,适用于对损失进行汇总,并用于指导整体模型的训练和优化。在 PyTorch 的损失函数中,reduction 参数用于指定损失的降维方式。可以得到整个批次样本的总和损失,适用于需要获得整个批次的总体损失值的情况。是常用的降维方式,在计算损失函数时使用。

加油加油加油加油 1748

Qt思岚激光雷达

Qt关于思岚激光雷达研究示例,本示例采用qt界面开发,可以串口也可以tcp进行设备连接。接收数据进行相关的数据进行绘图, 这种雷达可以用于大屏触摸场景,会场互动触摸场景开发。 #ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QTimer> #include <QWidget> #include "lidarmgr.h" namespace Ui { class MainWidget; } class MainWidget.

cqltbe131421的博客 1598

pytorch损失函数中‘reduction‘参数

内容介绍 在调用pytorch的损失函数时,会有一个’reduction’的参数,本文介绍使用不同的参数对应的结果,以L1 loss为例子: reduction = mean 当使用的参数为 mean(在pytorch1.7.1中elementwise_mean已经弃用)会对N个样本的loss进行平均之后返回 import torch import torch.nn as nn from torch.autograd import Variable sample = Variable(torch.ones(

欢迎大家来到新嬉皮士的世界 1万+

STM32F405实战:手把手教你实现永磁同步电机无感FOC控制(附完整工程文件)

本文详细介绍了基于STM32F405微控制器实现永磁同步电机无感FOC控制的完整实战方案。文章从硬件搭建、CubeMX配置入手,逐步讲解了FOC核心算法、SVPWM调制,并重点阐述了如何结合HFI高频方波注入与滑模观测器(SMO)实现全速域无感控制。内容涵盖算法原理、代码实现、参数整定及调试技巧,并附有完整工程文件,为开发者提供从理论到实践的全面指导。

sun99的博客 266

用一张分析型 CDS Query 看清争议案件新增与结案节奏:C_OpenClosedDisputeCase 深度解读

应收账款争议管理中的关键CDS视图分析 摘要:C_OpenClosedDisputeCase是SAP系统中用于监控应收账款争议案件的重要CDS视图,提供三个时间窗口(当日、近5天、当月)的新增与结案数据。该视图通过"创建vs解决"的净变化指标,帮助财务团队实时掌握争议管理趋势,特别适用于多币种跨国企业的现金流管理。其核心价值在于将争议管理从被动"救火"转变为可量化运营,通过统一汇率换算和关键日期参数,为管理层提供标准化的运营仪表盘。视图采用特权访问模式,需通过上层应用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 122

pytorch小知识点(二)-------CrossEntropyLoss(reduction参数)

在使用Pytorch时经常碰见这些函数cross_entropy,CrossEntropyLoss, log_softmax, softmax。 首先要知道上面提到的这些函数一部分是来自于torch.nn,而另一部分则来自于torch.nn.functional(常缩写为F)。二者函数的区别可参见知乎:torch.nn和funtional函数区别是什么? 下面是对与cross entro...

goodxin_ie的博客 3万+

YOLOv10改进,YOLOv10二次创新C2f结构采用WTConv卷积(感受野的小波卷积),ECCV 2024

WTConv 的核心思想是通过结合卷积神经网络(CNN)的强大特征提取能力与小波变换的多尺度特性,来实现大感受野的卷积操作,同时避免传统大卷积核带来的参数爆炸问题。传统的卷积操作通过滑动小窗口在图像上逐步执行局部特征提取,感受野的大小直接取决于卷积核的尺寸。随着卷积核的增大,参数量呈指数增长,导致网络训练效率降低、计算资源消耗增加。为解决这些问题,WTConv 提出了在小波域中执行卷积操作的策略。小波变换是一种常用于信号处理的技术,能够将信号分解为不同频率成分。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1024

PyTorch深度学习-06逻辑斯蒂回归(快速入门)

本文详细介绍PyTorch深度学习的逻辑斯蒂函数,包括为什么要用逻辑斯蒂函数、比较回归与分析的不同、怎样将实数集映射到0-1区间,逻辑斯蒂函数模型及损失函数、逻辑斯蒂函数模型与线性函数模型的代码比较、完整代码及结果

m0_62307289的博客 2865

Python之aaindex包语法、参数和实际应用案例

`aaindex`是一个专为生物信息学设计的Python包,主要用于处理氨基酸指数(AAindex)数据库。该数据库收集了各种氨基酸的物理化学性质和统计特性,涵盖疏水性、电荷、体积等500多种特性。`aaindex`包提供了便捷的接口,让用户能够快速访问这些数据,并应用于蛋白质序列分析、结构预测、功能推断等领域。

王国平的博客 1037

2026年寒武纪数字IC笔试试卷带答案

本文摘要: 该数字IC设计测试卷包含单选题(30分)、波形分析题(15分)、多选题(30分)三类客观题,覆盖时序约束、半导体工艺、状态机、数制转换、同步复位等核心知识点。重点考察:1)跨时钟域处理(如异步FIFO、格雷码应用);2)时序分析(建立/保持时间、时钟约束指令);3)低功耗设计技术(时钟门控、DVFS);4)寒武纪MLU架构特性(张量核、混合精度计算)。解析强调工程实践要点,如异步复位需同步释放、建立时间违例与频率的关联性等。试题难度梯度明显,既包含基础概念辨析(如Moore/Mealy状态机),

Open 223

【B站_刘二大人pytorch深度学习实践】笔记作业代码合集

手动训练:线性模型,梯度下降,BP Pytorch框架训练:线性回归,LogisticRegression,多维特征输入,加载数据集,多分类,CNN,RNN

m0_58586235的博客 3840

Codex 100个真实案例 - 用AI生成Blender 3D建模脚本(建模师要失业了?)

本案例将展示如何用 Codex 生成 Blender Python API(bpy)脚本,自动创建完整的 3D 模型。我们将从基础几何体开始,逐步实现布尔运算、材质设置、光照配置,最终完成一张精美桌子的 3D 建模——包括桌面、桌腿、倒角、木纹材质。还会实现参数化批量生成不同风格的桌子、渲染输出 PNG 图片、以及 360 度旋转动画。全程用自然语言驱动 Codex,让建模从"点鼠标"变成"说人话"!

yueyeguzhuo的专栏 632

PyTorch深度学习实践(b站刘二大人)P6讲 逻辑斯蒂回归 Logistic Regression

1.分类任务的数据集 ① The MNIST Dataset:handwritten digits Training set: 60,000 examples, Test set: 10,000 examples. Classes: 10 import torchvision train_set = torchvision.datasets.MNIST(root='../dataset/mnist', train=True, download=True) test_set = torch..

m0_60152377的博客 1429

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

机器学习笔记——pytorch实现逻辑斯蒂回归Logistic regression

参考视频——B站刘二大人《pytorch深度学习实践》

weixin_45978839的博客 1892

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习之pytorch实现逻辑斯蒂回归

也是用y=wx+b的模型来举例,之前的输出y属于实数集合R,现在我们要输出一个一个概率,也就是在区间[0,1]之间。我们就想到需要找出一个映射,把我们之前的输出集合R映射到区间[0,1],他就是函数Sigma,这样我们就轻松的实现了实数集合到0~1之间的映射。logistic 适用于分类问题,这里案例( y为0和1 ,0和 1 分别代表一类)于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。

m0_74228185的博客 1433

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

06逻辑斯蒂回归

本节内容是学习 刘二大人的《PyTorch深度学习实践》的06逻辑斯蒂回归。主要知识点:Logistic Regression Model

m0_72800308的博客 1384

刘二大人《PyTorch深度学习实践》p6逻辑斯蒂回归

BCELoss基于交叉熵损失(Cross Entropy Loss)的概念,适用于二分类问题,其中每个样本只能属于两个类别之一,通过最小化BCELoss损失值来调整模型的参数,使得结果不断精确。提供了一些方便的函数和类,用于加载和预处理常见的图像数据集,如MNIST、CIFAR10、ImageNet等。它可以自动进行图像数据的下载、数据的分割和转换,以及数据集的加载和批处理。任务,要求将图像分类为飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车这十个类别之一。的任务,包括将图像分类为0到9中的一个数字。

xzrrr的博客 1269

PyTorch深度学习实践概论笔记6-逻辑斯蒂回归

Revision-Linear Regression Classification-The MNIST Dataset MNIST 数据集来自美国国家标准与技术研究所,National Institute of Standards and Technology (NIST)。 训练集 (training set) 由来自 250 个不同人手写的数字构成,其中 50% 是高中学生,50% 来自人口普查局 (the Census Bureau) 的工作人员。测试集(test set) 也是同样比..

csdn_xmj的博客 1513

《PyTorch深度学习实践》完结合集--B站刘二大人学习总结

无

mumawei123的博客 3240

PyTorch教程—B站刘二大人笔记

PyTorch教程—B站刘二大人笔记

weixin_53236432的博客 1956

PyTorch深度学习实践 Lecture06 逻辑斯蒂回归

《PyTorch深度学习实践》 Lecture 06 Logistic_Regression(逻辑斯蒂回归) 文章目录 Logistic_Regression(逻辑斯蒂回归) 逻辑斯蒂回归 和 线性回归 之间的区别在于 激活函数 σ();引入激活函数就能在 神经网络中引入非线性,从而构造出 非线性模型,强化网络的学习能力,相关资料和代码详见:

A_John 的博客 821

【PyTorch】PyTorch深度学习实践|视频学习笔记|P6-P9

刘老师B站《PyTorch深度学习时实践课程》的P6-P9的相关笔记和代码

kodoshinichi的博客 2243

Logistic Regression 逻辑斯蒂回归

Logistic Regression 逻辑斯蒂回归

leoatliang的博客 1592

PyTorch深度学习实践(六)逻辑斯蒂回归

虽然叫回归,但是是做分类的 线性回归模型 单样本损失 在线性空间,我们的估计值y属于一个连续的空间,这种任务叫做回归任务,但是在很多的机器学习任务中,我们要做的是分类 比如ministr数据集,训练集60000个,测试集10000个,有10个分类,我们模型估算出来的结果是一个0…9离散值的集合,我们要估算的是y属于哪一个,这种问题叫做分类问题 然而我们并不是输出输入的样本所属的类别,而是输出它属于每个类别的概率,概率最大的一项作为我们分类的结果 逻辑斯蒂函数要把y^从实数空间映射到[0,1],即需要找到一

想握住此生辽阔 609
上一篇: 深度学习——PyTorch使用不同优化器训练线性回归(B站刘二大人P5作业)
下一篇: ACM练习——三整数排序,从键盘输入三个整数x,y和z,按从大到小的顺序输出它们的值。(Python)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

学习CV的研一小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值