码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • NNDL 实验四 线性分类


    pytorch实现

    第3章 线性分类

    3.1 基于Logistic回归的二分类任务

    3.1.1 数据集构建

    构建一个简单的分类任务,并构建训练集、验证集和测试集。
    本任务的数据来自带噪音的两个弯月形状函数,每个弯月对一个类别。我们采集1000条样本,每个样本包含2个特征。

    随机采集1000个样本,并进行可视化。

    将1000条样本数据拆分成训练集、验证集和测试集,其中训练集640条、验证集160条、测试集200条。

    3.1.2 模型构建

    问题1:Logistic回归在不同的书籍中,有许多其他的称呼,具体有哪些?你认为哪个称呼最好?

    问题2:什么是激活函数?为什么要用激活函数?常见激活函数有哪些?

    3.1.3 损失函数

    交叉熵损失函数

    3.1.4 模型优化

    不同于线性回归中直接使用最小二乘法即可进行模型参数的求解,Logistic回归需要使用优化算法对模型参数进行有限次地迭代来获取更优的模型,从而尽可能地降低风险函数的值。
    在机器学习任务中,最简单、常用的优化算法是梯度下降法。

    使用梯度下降法进行模型优化,首先需要初始化参数W和 b,然后不断地计算它们的梯度,并沿梯度的反方向更新参数。

      

    3.1.5 评价指标

    在分类任务中,通常使用准确率(Accuracy)作为评价指标。

    3.1.6 完善Runner类

    基于RunnerV1,本章的RunnerV2类在训练过程中使用梯度下降法进行网络优化,模型训练过程中计算在训练集和验证集上的损失及评估指标并打印,训练过程中保存最优模型。

    3.1.7 模型训练

    Logistic回归模型的训练,使用交叉熵损失函数和梯度下降法进行优化。
    使用训练集和验证集进行模型训练,共训练 500个epoch,每隔50个epoch打印出训练集上的指标。

    3.1.8 模型评价

    使用测试集对训练完成后的最终模型进行评价,观察模型在测试集上的准确率和loss数据。


    3.2 基于Softmax回归的多分类任务

    Logistic回归可以有效地解决二分类问题。

    但在分类任务中,还有一类多分类问题,即类别数C大于2 的分类问题。

    Softmax回归就是Logistic回归在多分类问题上的推广。

    3.2.1 数据集构建

    数据来自3个不同的簇,每个簇对一个类别。我们采集1000条样本,每个样本包含2个特征。

    3.2.2 模型构建

    思考题:Logistic函数是激活函数。Softmax函数是激活函数么?谈谈你的看法。

    3.2.3 损失函数

    3.2.4 模型优化

    使用3.1.4.2中实现的梯度下降法进行参数更新

    3.2.5 模型训练

    实例化RunnerV2类,并传入训练配置。使用训练集和验证集进行模型训练,共训练500个epoch。每隔50个epoch打印训练集上的指标。

    3.2.6 模型评价

    使用测试集对训练完成后的最终模型进行评价,观察模型在测试集上的准确率。


    3.3 实践:基于Softmax回归完成鸢尾花分类任务

    步骤:数据处理、模型构建、损失函数定义、优化器构建、模型训练、模型评价和模型预测等,

    • 数据处理:根据网络接收的数据格式,完成相应的预处理操作,保证模型正常读取;
    • 模型构建:定义Softmax回归模型类;
    • 训练配置:训练相关的一些配置,如:优化算法、评价指标等;
    • 组装Runner类:Runner用于管理模型训练和测试过程;
    • 模型训练和测试:利用Runner进行模型训练、评价和测试。

    (说明:使用深度学习进行实践时的操作流程基本一致,后文不再赘述。)

    主要配置:

    • 数据:Iris数据集;
    • 模型:Softmax回归模型;
    • 损失函数:交叉熵损失;
    • 优化器:梯度下降法;
    • 评价指标:准确率。

    为了加深对机器学习模型的理解,请自己动手完成以下实验:

    1. 尝试调整学习率和训练轮数等超参数,观察是否能够得到更高的精度;(必须完成)
    2. 在解决多分类问题时,还有一个思路是将每个类别的求解问题拆分成一个二分类任务,通过判断是否属于该类别来判断最终结果。请分别尝试两种求解思路,观察哪种能够取得更好的结果;(选做)
    3. 尝试使用《神经网络与深度学习》中的其他模型进行鸢尾花识别任务,观察是否能够得到更高的精度。(选做)

    ref:

    NNDL 实验3(上) - HBU_DAVID - 博客园 (cnblogs.com)

    NNDL 实验3(下) - HBU_DAVID - 博客园 (cnblogs.com)

    3. 线性神经网络 — 动手学深度学习 2.0.0-beta1 documentation (d2l.ai)

    • 3.4. softmax回归
      • 3.4.1. 分类问题
      • 3.4.2. 网络架构
      • 3.4.3. 全连接层的参数开销
      • 3.4.4. softmax运算
      • 3.4.5. 小批量样本的矢量化
      • 3.4.6. 损失函数
      • 3.4.7. 信息论基础
      • 3.4.8. 模型预测和评估
      • 3.4.9. 小结
      • 3.4.10. 练习
    • 3.5. 图像分类数据集
      • 3.5.1. 读取数据集
      • 3.5.2. 读取小批量
      • 3.5.3. 整合所有组件
      • 3.5.4. 小结
      • 3.5.5. 练习
    • 3.6. softmax回归的从零开始实现
      • 3.6.1. 初始化模型参数
      • 3.6.2. 定义softmax操作
      • 3.6.3. 定义模型
      • 3.6.4. 定义损失函数
      • 3.6.5. 分类精度
      • 3.6.6. 训练
      • 3.6.7. 预测
      • 3.6.8. 小结
      • 3.6.9. 练习
    • 3.7. softmax回归的简洁实现
      • 3.7.1. 初始化模型参数
      • 3.7.2. 重新审视Softmax的实现
      • 3.7.3. 优化算法
      • 3.7.4. 训练
      • 3.7.5. 小结
      • 3.7.6. 练习
  • 相关阅读:
    在uniapp中通过自定义事件使页面之间传递数据
    【进程间通信】进程间通信方式汇总
    Java---线程详解(并发并行,Thread类,Runnable接口,同步机制,线程死锁......)
    python异常处理
    六大银行数据治理现状盘点:治理架构、数据标准与数据平台
    编译原理实验一、 程序设计语言认知实验报告
    我原本写了一个网页并且上线了,后面把内容全部改过,为什么打开网页还是显示旧的内容。(浏览器缓存已清理)
    【JavaWeb】Servlet系列 --- 使用纯Servlet做一个单表的CRUD操作(oa小项目,超详细笔记)
    难啦!Java17以下不能用啦,我们怎么办?
    使用TinyXML-2解析XML文件
  • 原文地址:https://blog.csdn.net/qq_38975453/article/details/126492021
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号