机器学习——压缩网络作业

文章目录

    • 任务描述
    • 介绍
      • 知识蒸馏
      • 网络设计
    • Baseline
    • 实践

任务描述

在这里插入图片描述

  • 网络压缩:使用小模型模拟大模型的预测/准确性。
  • 在这个任务中,需要训练一个非常小的模型来完成HW3,即在food-11数据集上进行分类。

在这里插入图片描述

介绍

在这里插入图片描述
有许多种网络/模型压缩的类型,这里介绍两种:

  • 知识蒸馏:让小模型通过观察大模型学习时的行为(预测)来学习得更好。(字面上:让小模型从大模型中提取知识)
  • 设计架构:使用更少的参数来表示原始层。(例如,普通卷积 - 深度卷积和逐点卷积)
  • 如果对网络剪枝感兴趣,可以查看ML-Spring2020-HW7中的Colab教程。

知识蒸馏

在这里插入图片描述

  • 在训练小模型时,添加大模型的一些信息(例如预测的概率分布)以帮助小模型更好地学习
  • 提供了一个训练良好的网络,以帮助您进行知识蒸馏(准确率约为0.855)
  • 请注意,在写作业时,只能使用我们提供的预训练模型

网络设计

在这里插入图片描述

  • 深度卷积和逐点卷积层(MobileNet中提出)
    • 可以将原始卷积视为密集/线性层,但每行/每个权重是一个滤波器,原始乘法变成了卷积操作。(输入权重 - 输入滤波器)
    • 深度卷积depthwise:让每个通道首先通过各自的滤波器,然后让每个像素通过共享权重的密集/线性层。
    • 逐点卷积pointwise:是一个1x1卷积。
  • 强烈建议使用类似的技术来设计您的模型。 ( N M k k / N k k + N M ) (NMkk / Nkk+NM) NMkk/Nkk+NM
    参数量变少很多

Baseline

在这里插入图片描述

  • 简单基准(2分,准确率≥0.59856,2小时)
    • 只需运行代码并提交答案。
  • 中等基准(2分,准确率≥0.65412,2小时)
    • 完成知识蒸馏中的损失并控制 alpha 和 T。
  • 强基准(1.5分,准确率≥0.72819,4小时)
    • 通过深度和逐点卷积层修改模型架构。
      • 可以从 MobileNet、ShuffleNet、DenseNet、SqueezeNet、GhostNet 等获取优秀的想法。
    • 在 HW3 - CNN 中学到的任何技术和方法。例如,加强数据增强,修改半监督学习等。

在这里插入图片描述

  • Boss Baseline (0.5 pts, acc ≥ 0.81003)
    • 让教师网络更加强大。
      • 如果教师网络太强大,可以考虑TAKD技术。
    • 实施其他高级知识蒸馏。
      • 例如,DML,关系KD …
    • 如果模型参数数量略大于约束值(100,000),可以使用网络剪枝。
    • 如果对之前的技术感到困惑,可以查看去年TA的课程。(幻灯片,视频)

实践

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • group convolution: 类似于Alexnet,分成一组一组的,alexnet里面是一半一半

在这里插入图片描述

  • depthwise,需要将groups设置成in_chs
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 语料要干净
  • 由于有一个学习过的大模型,让它教导其他小模型。在实现中,让训练目标为大模型的预测,而不是地面真相。

为什么有效?

  • 如果数据不干净,那么大模型的预测可能会忽略带有错误标记数据的噪声。
  • 标签可能具有某些关系。例如,数字8更类似于6、9、0,而不是1、7。
    在这里插入图片描述
  • hard loss + soft loss
    在这里插入图片描述
    教师模型设置
  • 提供一个经过良好训练的教师模型,以帮助进行知识蒸馏到学生模型。请注意,如果想更改转换函数,应该考虑是否适合这个经过良好训练的教师模型。
  • 如果无法成功下载,请更改链接(在此Colab教程的底部提供了备用链接)。

在这里插入图片描述
在未标记的数据中生成伪标签是一种半监督学习的技术,它可以帮助利用未标记数据来提高模型的性能。生成伪标签的一般步骤如下:

  1. 使用已训练的模型进行推理:首先,使用已经在标记数据上训练好的模型对未标记数据进行推理,得出模型对这些数据的预测结果。

  2. 选择置信度阈值:为了生成可靠的伪标签,需要设置一个置信度阈值。只有当模型对样本的预测置信度高于这个阈值时,才会为该样本生成伪标签。

  3. 生成伪标签:对于那些置信度高于阈值的样本,将模型的预测结果作为它们的伪标签。

  4. 结合标记数据和伪标签数据:将生成的伪标签与已有的标记数据结合起来,形成一个扩充的训练集。

  5. 重新训练模型:使用包含标记数据和伪标签数据的扩充训练集重新训练模型,以提高模型性能和泛化能力。

需要注意的是,在生成伪标签时要谨慎选择置信度阈值,以确保伪标签的质量和对模型性能的提升有益处。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/464555.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【静夜思】为什么我们会如此喜欢夜晚呢

作为一名大学生,熬夜对我来说已是常态。每天都是近乎一点钟才有困意,觉得应该上床睡觉了,即使明天早八,即使明天有很多课。我也观察过身边的朋友,他们中大多数也和我一样,基本都是在12点过后才入睡。当今的…

AIGC笔记--关节点6D位姿按比例融合

1--核心代码 6D位姿一般指平移向量和旋转向量,Maya软件中关节点的6D位姿指的是相对平移向量和欧拉旋转向量; 为了按比例融合两个Pose,首先需要将欧拉旋转向量转换为旋转矩阵,在将旋转矩阵转换为四元数,利用球面线性插值…

指针 六 ---总结

文章目录 前言1.指针和指针变量2.const修饰2.1.const int* p 修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。但是指针变量本⾝的内容可变。2.2 int const *p2.3 int *const p2.4 const int* const p 3. 指针数组(array of pointers&…

彻底学会系列:一、机器学习之梯度下降(1)

1 梯度下降概念 1.1 概念 梯度下降是一种优化算法,用于最小化一个函数的值,特别是用于训练机器学习模型中的参数,其基本思想是通过不断迭代调整参数的值,使得函数值沿着梯度的反方向逐渐减小,直至达到局部或全局最小…

如何在webapp中手动部署

前言:这个有不知道怎么下载Tomcat的可以看我这篇博客的前面,有相关链接,下载好后我那边也有如何运行成功的 在idea中配置tomcat服务器,部署一个项目-CSDN博客 接下来进入这篇博客的正题!怎么手动部署 先找到我们下载…

java.lang.NoSuchMethodException异常解决

标题 java.lang.NoSuchMethodException异常的正确解决方法摘要🚀 异常介绍🧐 异常原因分析🛠 解决方法核对方法名称和参数使用正确的方法签名调整方法访问权限 📝 解决步骤详解🖥 代码案例演示❓ QA部分Q: 如何区分jav…

Linux环境开发工具之yum

前言 前面我们已经对基本的指令和权限进行了介绍,本期开始我们将介绍常用的开发工具。例如:软件包管理器yum。 本期内容介绍 Linux上安装软件的方式 什么是yum yum的相关操作 yum的本地配置和yum源 一、Linux上安装软件的方式 在介绍Linux上如何安装一…

uboot的移植——移植uboot官方的uboot到x210开发板(2)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考内容 1、uboot的移植——移植uboot官方的uboot到x210开发板(1) 2、uboot启动流程——C阶段的start_armboot函数-CSDN博客 3、以官方uboot移植uboot(SD卡驱动移植)-CSDN博…

Linux 块设备驱动

Linux 三大驱动分别是:字符设备驱动、块设备驱动、网络设备驱动。 块设备是针对存储设备的,比如 SD 卡、EMMC、NAND Flash、Nor Flash、SPI Flash、机械硬盘、固态硬盘等。因此块设备驱动其实就是这些存储设备驱动,块设备驱动相比字符设备驱…

【洞察】区块链、web3、元宇宙等技术共同催生出了什么样的商业未来?

下文为中国信息通信研究院云计算与大数据研究所所长何宝宏为思二勋所著的《分布式商业生态战略:数字商业新逻辑与企业数字化转型新策略》一书所作的推荐序。 近两年来,区块链已从鲜为人知发展到尽人皆知且众说纷纭,从产业初期的静默发展到产…

若你有才能,最好能遇上识才之人,高俅发迹的故事很好诠释了千里马与伯乐的关系

若你有才能,最好能遇上识才之人,高俅发迹的故事很好诠释了千里马与伯乐的关系 其实,“千里马”和“伯乐”都是中国古代传说里的角色。伯乐是古代一个善于相马(识别马的好坏)的人,而“千里马”则是指一匹能跑…

2、FreeRTOS之队列管理

xQueueReceive() 用于从队列中接收 ( 读取)数据单元。接收到的单元同时会从队列 中删除。 xQueuePeek() 也是从从队列中接收数据单元,不同的是并不从队列中删出接收到 的单元。 uxQueueMessagesWaiting()用于查询队列中当前有效数据单元个数。 写队列任…

简介:项目管理九大知识五大过程

前言 项目管理(Project Management,PM/Management by Projects,MBP) 在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。即从项目的投资决策开始到项目结束的全过程进行计划、组织、指挥、协调…

【首次抽奖】16G、32G免费送!云服务器选购推荐 京东云 阿里云 腾讯云对比 幻兽帕鲁 雾锁王国 省钱学生党

好消息:抽奖活动开启!时间:3月17日——3月24日 最高奖品:16G 6个月;32G 3个月 抽奖规则:B站点赞评论关注即可参与抽奖,3.24日公布获奖名单。 抽奖地址: 【首次抽奖】16G、32G免费…

TTS 擂台: 文本转语音模型的自由搏击场

对文本转语音 (text-to-speech, TTS) 模型的质量进行自动度量非常困难。虽然评估声音的自然度和语调变化对人类来说是一项微不足道的任务,但对人工智能来说要困难得多。为了推进这一领域的发展,我们很高兴推出 TTS 擂台。其灵感来自于LMSys为 LLM 提供的…

检索增强生成(RAG)应用的构建:LangChain与LlamaIndex的比较与选择

对于我要做RAG应用,我应该使用两者中的哪一个。或者说还是都使用? 在人工智能领域,检索增强生成(RAG)应用正变得越来越受欢迎,因为它们能够结合大型语言模型(LLMs)的自然语言处理能力…

不允许你不知道的Python私有属性和私有方法

​ 1.为什么要使用私有属性和私有方法 嘿,各位Python爱好者们,你们有没有遇到过这样的情况:你正在编写一个类,里面有一些属性或方法,你并不想让它们被外部直接访问或修改,但又需要某种方式来控制它们的访问…

【C/C++】C语言开发者必读:迈向C++的高效编程之旅

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方…

VUE3项目学习系列--Axios二次封装(五)

Axios中文文档 | Axios中文网 (axios-http.cn) Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequ…

【回归预测】基于SSA-BP(麻雀搜索算法优化BP神经网络)的回归预测 多输入单输出【Matlab代码#69】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. BP神经网络2. 麻雀搜索算法3. SSA-BP神经网络模型的构建4. 部分代码展示5. 仿真结果展示 【可更换其他算法,获取资源请见文章第6节:资源获取】 1. BP神经网络 BP&…