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

文章目录

    • 任务描述
    • 介绍
      • 知识蒸馏
      • 网络设计
    • 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. 重新训练模型:使用包含标记数据和伪标签数据的扩充训练集重新训练模型,以提高模型性能和泛化能力。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticSearch常见用法,看这一篇就够了(文末送书)

2024送书福利正式起航 关注「哪吒编程」,提升Java技能 文末送3本《一本书讲透Elasticsearch:原理、进阶与工程实践》 大家好,我是哪吒。 ElasticSearch是一款由Java开发的开源搜索引擎,它以其出色的实时搜索、稳定可靠、快速安…

【Linux】进程与可执行程序的关系fork创建子进程写实拷贝的理解

一、进程与可执行程序之间关系的理解 系统会将此时在系统运行的进程的各种属性都以文件的形式给你保存在系统的proc目录下。运行一个程序的时候,本质就是把磁盘中的程序拷贝到内存中,当一个进程运行起来的时候,它本质已经和磁盘中的可执行程序…

Epuck2 在 ROS 下的运动控制

文章目录 前言一、初始配置二、运动控制三、移动机器人总结 前言 在对Epuck2机器人进行完固件更新及IP地址查询后,接下来通过ROS来对Epuck2机器人进行运动控制。 一、初始配置 (1)创建一个 catkin 工作空间 mkdir -p ~/catkin_ws/src cd ~…

cmd常用指令

cmd全称Command Prompt,中文译为命令提示符。 命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。 在不同的操作系统环境下,命令提示符各不相同。 在windows环境下,命令行程序为cmd.exe,是一个32位的命令…

通俗易懂的Python循环讲解

循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。 for循环 for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次。 基本构造是 for 元素 in 序列: statemen…

ClickHouse中的设置的分类

ClickHouse中的各种设置 ClickHouse中的设置有几百个,下面对这些设置做了一个简单的分类。

C语言疑难题:杨辉三角形、辗转相除求最大公约数、求π的近似值、兔子问题、打印菱形

杨辉三角形&#xff1a;打印杨辉三角形的前10行 /* 杨辉三角形&#xff1a;打印杨辉三角形的前10行 */ #include<stdio.h> int main(){ int i,j; int a[10][10]; printf("\n"); for(i0;i<10;i){ a[i][0]1; a[i][i]1; …

提升Java IO性能!探究BufferedOutputStream的奥秘

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java IO相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

【系统架构师】-第4章-信息安全技术

1、基础知识 五要素&#xff1a; (1)机密性&#xff1a;确保信息不暴露给未授权的实体或进程。 (2)完整性&#xff1a;只有得到允许的人才能修改数据&#xff0c;并且能够判别出数据是否已被篡改。 (3)可用性&#xff1a;得到授权的实体在需要时可访问数据&#xff0c;即攻击…

力扣刷题Days20-151. 反转字符串中的单词(js)

目录 1,题目 2&#xff0c;代码 1&#xff0c;利用js函数 2&#xff0c;双指针 3&#xff0c;双指针加队列 3&#xff0c;学习与总结 1&#xff0c;正则表达式 / \s /&#xff1a; 2&#xff0c;结合使用 split 和正则表达式&#xff1a; 1,题目 给你一个字符串 s &am…

ChatGPT提示词方法的原理

关于提示词&#xff0c;我之前的一些文章可以参考&#xff1a; 【AIGC】AI作图最全提示词prompt集合&#xff08;收藏级&#xff09;https://giszz.blog.csdn.net/article/details/134815245?ydrefereraHR0cHM6Ly9tcC5jc2RuLm5ldC9tcF9ibG9nL21hbmFnZS9hcnRpY2xlP3NwbT0xMDExL…

RunnerGo测试平台的安装和使用

文章适用于想RunnerGo入门的同学&#xff0c;本人主要是后端&#xff0c;这里做一个入门的学习记录。想深入适用RunnerGo的同学可以参考官网文档&#xff1a; https://wiki.runnergo.cn/docs/ 这里我测试的代码是之前搭建的一个前后端分离小demo&#xff0c;代码地址是https:/…

Rocket MQ 从入门到实践

为什么要使用消息队列&#xff0c;解决什么问题&#xff1f;&#xff08;消峰、解藕、异步&#xff09; 消峰填谷 客户端》 网关 〉 消息队列》秒杀服务 异步解耦 消息队列中的重要概念理解。&#xff08;主题、消费组、队列&#xff0c;游标&#xff1f;&#xff09; 主题&…

Vulnhub - Toppo

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog Toppo 靶机下载地址&#xff1a;Toppo: 1 ~ VulnHub 搭建&#xff1a;创建任意虚拟机&#xff0c;然后…

【网络编程基础(一)】网络基础和SOCKET

这里写目录标题 1、网络三要素2、IPV4和IPV6区别3、网络交互3.1、交互模型图3.2、基础通信协议3.3、OSI参考模型与TCP/IP参考模型对应关系 4、SOCKET网络套接字4.1、SOCKET分类4.2、基于流式套接字的编程流程4.3、网络通信雏形4.4、socket函数4.4.1、socket函数示例 4.5、bind函…

idea 的基本配置

一、安装目录介绍 其中&#xff1a;bin 目录下&#xff1a; 二、配置信息目录结构 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性&#xff0c;就是你删除掉整个目录之后&#xff0c;重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置&#xff0c;所以很多…

串的模式匹配(简单匹配、KMP以及手工算next/nextval)

简单模式匹配 思路&#xff1a;主串和字串进行匹配&#xff0c;设置i、j、k&#xff08;主串、子串和匹配起始下标&#xff09;主串和子串一开始都是从第一个位置&#xff08;k i&#xff09;&#xff0c;若当前主串和子串匹配成功那么i、j&#xff0c;若匹配不成功k、j 1&am…

24计算机考研调剂 | 宁波大学

北京信息科技大学接收调剂研究生 2024中国科学院宁波材料所与高校联合培养硕士研究生项目介绍 考研调剂招生信息 中国科学院宁波材料技术与工程研究所&#xff08;简称“宁波材料所”&#xff09;成立于2004年4月&#xff0c;是由中国科学院、浙江省人民政府、宁波市人民政府三…

算法第二十九天-森林中的兔子

森林中的兔子 题目要求 解题思路 重点&#xff1a;某个兔子回答x的时候&#xff0c;那么数组中最多循序x1个同花色的兔子同时回答x 我们可以通过举例子得出一下的规律&#xff1a; 我们统计数组中所有回答x的兔子的数量n&#xff1a; 若n%(x1)0&#xff0c;说明我们此时只需…

每日一题——LeetCode1694.重新格式化电话号码

方法一 模拟&#xff1a; 首先去除number里面的破折号和空格&#xff0c;取出纯数字组成的字符串str。 对于str每三个数分成一组&#xff0c;加一个破折号&#xff0c;当str的长度小于等于4时再分情况讨论&#xff0c;如果等于4就分为22形式&#xff0c;如果小于4&#xff0c…