小样本学习

一、基础知识

小样本学习(few shot learning)旨在使用先验知识(prior knowledge)基于有限数量的样本推广(generaling)到新任务(new task)。这些先验(prior knowledge)通常指的是很大规模的训练集,有很多的类和样本,然而在新任务(new task)中的样本(the samples)在这些大规模的训练集上面从来都没有出现过。例如在小样本图像分类中(in few shot image classification),预训练模型只能看到 五个鸟类图像,(一个类有一个图像,并且不存在预训练数据集中)和 预测查询图像中的鸟类类别。

总的来说,小样本学习关注下面两个方面:

1.如何将先验知识嵌入到模型中(使用大规模的数据集进行预训练)

2.如何转移知识以适应新的任务(在少量有标签样本上学习)

小样本学习的一些术语:

训练集(trainning set):在训练集上面,每一个类别有很多样本,这个数据集足够大以训练一个深度神经网络。

支撑集(support set):“Support set”指的是一个小型的带有标签的图像集合,其中所有的类别在训练集中都不存在。
查询集(query set):查询集(Query set)是指一组未标记的图像,用于预测并与支持集(Support set)共享相同的类别。

N way K shot:是一种支撑集设置,它表示支持图像包含N个类别,每个类别有K个样本。

在深度学习中,对于分类任务,一个支持集(support set)中会有NxK个支持图像。

对于检测任务,一个支持集中会有NxK个支持实例,而支持集中的图像数量可以少于NxK。

二、模型评估(evaluation)

小样本图像分类

数据集的类别将会被分为三个互不相交的组:训练集、测试集、验证集。

评估也被叫做元测试,将会从测试集随机采样已经被标注的支持图片和未被标注的查询集图片形成一个任务并且会得到一个预测的在那个任务中查询集的准确率。通常元测试将会重复采样大量的人任务进而得到一个充分的评估,从所有任务中学习到acc的平均值和标准差。

三、配置文件(config)

这段代码是一个深度学习模型的配置文件,主要包括了模型结构、数据预处理、训练参数等信息。

  1. 模型配置:

    • type: 模型的类型,这里是Baseline。
    • backbone: 模型的主干网络,这里是Conv4。
    • head: 分类器的头部结构,这里是线性分类器。
    • meta_test_head: 在元测试中使用的分类器头部结构。
  2. 数据处理管道:

    • train_pipeline: 训练数据的预处理管道,包括从文件路径加载图片、随机裁剪、随机翻转、颜色增强、归一化等操作。
    • test_pipeline: 测试数据的预处理管道,包括从文件路径加载图片、调整尺寸、中心裁剪、归一化等操作。
  3. Fine-tuning的配置:

    • num_steps: Fine-tuning的迭代次数。
    • optimizer: Fine-tuning使用的优化器配置。
  4. 数据集配置:

    • samples_per_gpu: 单个GPU上的batch size。
    • workers_per_gpu: 单个GPU上用于数据预取的worker数。
    • train: 训练集的配置,包括数据集名称、数据集路径前缀和预处理管道等。
    • val: 验证集的配置,用于元测试。
    • test: 测试集的配置,用于模型的验证,与val类似。
  5. 日志和保存配置:

    • log_config: 日志打印配置,包括间隔和日志记录器类型。
    • checkpoint_config: 模型保存配置,包括保存间隔。
    • evaluation: 模型评估配置,包括评估间隔和评估指标。
  6. 分布式训练配置:

    • dist_params: 分布式训练的后端配置。
  7. 训练参数配置:

    • log_level: 日志级别。
    • load_from: 加载预训练模型的路径。
    • resume_from: 恢复训练的断点路径。
    • workflow: 运行流程配置。
    • pin_memory: 是否使用pin memory加速数据传输。
    • use_infinite_sampler: 是否使用无限采样器。
    • seed: 随机种子。
    • runner: 运行器类型和最大训练轮数。
    • optimizer: 优化器配置。
    • optimizer_config: 优化器的其他配置。
    • lr_config: 学习率调整策略配置。

这些配置文件用于构建深度学习模型的训练过程,包括模型结构、数据处理和优化策略等方面的设置。

四、环境配置:

在Ubuntu上查看您的计算机是否支持单个GPU、多个GPU等功能,可以通过以下步骤进行操作:

  1. 打开终端(Terminal)。

  2. 使用以下命令查看您的计算机是否具有GPU设备:

    lspci | grep -i vga

    如果输出中包含类似于"NVIDIA Corporation"的字样,则说明您的计算机拥有NVIDIA GPU设备。如果输出为空或没有提及GPU相关信息,则可能是您的计算机不具备独立的GPU设备。

  3. 如果您的计算机具有GPU设备,您可以使用以下命令查看可用的GPU数量:

    nvidia-smi -L

    此命令将显示每个可用GPU的索引和名称。如果只显示一个GPU,则表示您的计算机只具有一个GPU,如果显示多个GPU,则表示您的计算机有多个GPU可供使用。

  4. 如果您只有一个GPU,并且希望在单个GPU上运行测试脚本,您可以使用以下命令:

    python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]

    请注意,在此命令之前,确保已安装了依赖库和相关软件。

  5. 如果您的计算机具有多个GPU,并且希望在多个GPU上并行运行测试脚本,您可以使用以下命令:

    shell复制代码
    sh ./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [optional arguments]

    其中,${GPU_NUM} 是指您要使用的GPU数量。

请根据您的实际情况选择适当的命令和参数来运行测试脚本。

五、常见的小样本模型

在Proto network里面

支撑集与查询集是没有交集的同类的样本的数据。

损失函数:在每一次的迭代过程中更新的目的是,约束支撑集与查询集每一类中圆形的距离,对于同一类的圆形,要使得他们之间的距离要尽可能的小,

距离计算:本文采用的是欧式距离,除了欧氏距离还有余弦距离也别经常用(一个博主证明预先距离出来的实验结果要比欧式距离的结果好)。

思想:类别

六、Baseline++

每次采样都是构建一个元任务的方式构建的,这个支撑集是由n-way-k-shot来构建的(有n个类别,每个类别有k个样本),一般在mini-ImageNet上面都是 5-way-5-shot 或者 5-way-1-shot的。

Baseline是标准的线性距离的分类器,而Baseline++换成了余弦距离的分类器。19年之前都是采用的是元学习(比如说miniImageNet上有64个类别的样本,但是每次知识从中选出5个样本进行训练)的思想进行训练的。

训练过程(base class data):将所有的数据放入训练,最后加一个分类器。

微调过程(采用小样本方式测试novel class data):每个类取少量的样本,将特征提取器固定住,

在执行单GPU测试时,您需要按照以下方式填写参数:

  • {CONFIG_FILE}:配置文件的路径。这是指定模型和测试设置的配置文件。您可以将其替换为实际的配置文件路径。
  • ${CHECKPOINT_FILE}:检查点文件的路径。这是指定要加载的模型权重的文件。您可以将其替换为实际的检查点文件路径。
  • [optional arguments]:可选参数。这是一些额外的参数,您可以根据需要添加或省略它们。

请注意,${CONFIG_FILE}${CHECKPOINT_FILE}是占位符,您需要将它们替换为实际的文件路径。另外,[optional arguments]是一个占位符,表示您可以选择添加其他参数,比如调整批处理大小、设备等。

以下是示例命令的格式:

python tools/test.py path/to/config_file.py path/to/checkpoint.pth --arg1 value1 --arg2 value2

您需要将path/to/config_file.py替换为实际的配置文件路径,path/to/checkpoint.pth替换为实际的检查点文件路径,并根据需要添加/更改其他参数及其值。

请确保您在运行命令之前已经安装了必需的依赖项,并具有正确的环境设置。

七、运行过程中出现的问题:


(1)数据集摆放问题(我本人使用的是一mini ImageNet数据集为模板设置的新数据集摆放),如下:

(2)数据集过小改参数

(3)除了数据集没有问题之外可能包含其他的文件读入到数据集里面,删除即可。

rm -rf .ipynb_checkpoints
find . -name ".ipynb_checkpoints" -exec rm -rf {} \;  ## 这个在大文件运行后面就都删了 因为.ipynb_checkpoints是文件夹 需要加-rf循环地删除

(4)loss为0时,减小学习率

(5)train.csv;val.csv;test.csv文件中不能出现空白文件

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识C语言——详细入门(系统性学习day4)

目录 前言 一、C语言简单介绍、特点、基本构成 简单介绍: 特点: 基本构成: 二、认识C语言程序 标准格式: 简单C程序: 三、基本构成分类详细介绍 (1)关键字 (2&#xf…

Blender导出FBX给UE5

最近在学习UE5的资源导入,总结如下: 建模使用Blender,UE5版本是5.3 1.纯静态模型导入UE5 Blender FBX导出设置保持默认即可, UE5把导入设置里Miscellaneous下Force Front XAxis和Convert Scene Unit勾选即可 2.带骨骼动画的模型…

字符函数和字符串函数模拟实现与详解————长度不受限制的字符串函数

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2strlen函数 3.strcpy函数…

csdn未经允许将我的文章设置成vip收费

以前在csdn写了一些笔记,后来不用csdn了,想着留下这些笔记或多或少能帮助其他初学者,就没管它。结果csdn把文章设置成收费了,这个收费不是我本人弄的,是csdn弄的!我现在只能把这些文章删除掉了。

Docker初识

什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到…

Tungsten Fabric数据量过大问题处理初探

开源SDN系统Tungsten Fabric面临数据产生过多问题。 经排查,产生数据多出自analytics组件的Cassandra数据库()。很多分析数据会存储至Cassandra库,并持久化处理。 没有特殊调整的话,目录在 /var/lib/docker/volumes/analytics_database_an…

【大数据开发技术】实验04-HDFS文件创建与写入

文章目录 一、实验目标二、实验要求三、实验内容四、实验步骤 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS原理熟练掌握HDFS的API使用方法掌握单个本地文件写入到HDFS文件的方法掌握多个本地文件批量写入到HDFS文件的方法 二、实验要求 给出主要实验步骤成…

【新版】系统架构设计师 - 案例分析 - 架构设计<SOA与微服务>

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 架构设计<SOA与微服务>例题1例题2例题3例题4 架构 - 案例分析 - 架构设计<SOA与微服务> 这里SOA与微服务的例题只对应找寻了几个&#x…

一款强大的ntfs磁盘读写工具Paragon NTFS 15破解版百度网盘下载

今天再给大家分享一款NTFS工具Paragon NTFS 15,Paragon NTFS 15破解版是目前的最新版,需要的赶快收藏,地址失效可以留言。 Paragon Ntfs For Mac 15下载:https://souurl.cn/s84CCB Crcak链接: https://pan.baidu.com/s/1c2Hx7QBE…

计算机网络工程师多选题系列——计算机网络

2 计算机网络 2.1 网络技术基础 题型1 TCP/IP与ISO模型的问题 TCP/IP由IETF制定,ISO由OSI制定; TCP/IP分为四层,分别是主机-网络层、互联网络层、传输层和应用层;OSI分为七层,分别是物理层、数据链路层、网络层(实…

解决react报错“JSX 表达式必须具有一个父元素“

现象如下&#xff1a; 原因&#xff1a; 新插入的dom元素跟已有的dom元素平级了&#xff0c;必须创建一个共有的根元素 解决办法&#xff1a; 使用<> </>标签作为根元素&#xff0c;把所有子元素包裹起来 <> ....原代码 </> 问题解决&#xff01;…

手把手教你用 Milvus 和 Towhee 搭建一个 AI 聊天机器人!

作为向量数据库的佼佼者&#xff0c;Milvus 适用于各种需要借助高效和可扩展向量搜索功能的 AI 应用。 举个例子&#xff0c;如果想要搭建一个负责聊天机器人数据管理流程&#xff0c;Milvus 必然是首选向量数据库。那么如何让这个应用程序开发变得易于管理及更好理解&#xff…

Python PEP8 代码规范常见问题及解决方案

Win11查看安装的Python路径及安装的库 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter Python函数绘…

计算结构体大小:内存对齐详解

前言&#xff1a;不管在面试还是在升学的路上&#xff0c;内存对齐永远是结构体和联合体的热门考点&#xff0c;对于同样的结构体成员&#xff0c;他们相互之间的顺序位置不同就会导致整个结构体大小的不同&#xff0c;因此计算结构体联合体的字节大小就成为了一个有效的考点 目…

linux 清除卸载jenkins

1、停服务进程 查看jenkins服务是否在运行&#xff0c;如果在运行&#xff0c;停掉 查看服务 ps -ef|grep jenkins 停掉进程 kill -9 XXX2、查找安装目录 find / -name "jenkins*"3、删掉相关目录 删掉相关安装目录 rm -rf /root/.jenkins/# 删掉war包 rm -rf /…

关于MATLAB R2022b中MATLAB function没有edit data选项的解决办法

问题描述 在MATLAB 2022b的simulink中双击MATLAB function&#xff0c;出来的是这个界面&#xff0c;而不是跳转到MATLAB的编辑窗口。因此就找不到edit data选项&#xff0c;没法完成新建data store memory 全局变量。 解决办法&#xff1a; 点击 编辑数据 按钮 在弹出的窗…

LiveGBS流媒体平台GB/T28181功能-海康大华摄像头接入无法语音对讲通道为0无法播放时候如何抓包分析windows抓包和Linux抓包

LiveGBS通道数为0无法播放的时候如何抓包分析windows抓包和Linux抓包 1、第一步&#xff1a;抓包工具准备1.1、Linux1.2、windows 2、第二步&#xff1a;找到设备出口ip3、第三步&#xff1a;执行命令抓设备出口ip3.1 Linux3.2 Windwos 4、第四步&#xff1a;触发相关页面操作4…

【产品运营】如何做好B端产品规划

产品规划是基于当下掌握的多维度信息&#xff0c;为追求特定目的&#xff0c;而制定的产品资源投入计划。 产品规划是基于当下掌握的多维度信息&#xff08;客户需求、市场趋势、竞争对手、竞争策略等&#xff09;&#xff0c;为追求特定目的&#xff08;商业增长、客户满意等&…

xcode15下载ios17模拟器失败

升级到xcode15后需要安装ios17模拟器 但是在下载过程中会遇到报错 如下图这种 网上搜索了一下发现有人遇到过无法下载的问题&#xff0c;并且在apple官网也有人提出类似问题 https://developer.apple.com/forums/thread/737648 解决方案就是从https://developer.apple.com/do…

HarmonyOS开发:解决DevEco Studio低版本导入高版本项目运行失败问题

前言 基于DevEco Studio 4.0 Beta2&#xff0c;hvigorVersion为3.0.2&#xff0c;开发了一个项目&#xff0c;上传到了远程仓库&#xff0c;当同事下载后&#xff0c;却始终无法运行&#xff0c;频繁报错&#xff0c;由于API都是使用的9&#xff0c;第一感觉就是开发环境不同&a…