当前位置: 首页 > news >正文

李宏毅2023机器学习HW15-Few-shot Classification

文章目录

  • Link
  • Task: Few-shot Classification
  • Baseline
    • Simple—transfer learning
    • Medium — FO-MAML
    • Strong — MAML

Link

Kaggle

Task: Few-shot Classification

The Omniglot dataset

  • background set: 30 alphabets
  • evaluation set: 20 alphabets
  • Problem setup: 5-way 1-shot classification

Omniglot数据集

  • 背景集:30个字母
  • 评估集:20个字母
  • 问题设置:5-way 1-shot分类
    Definition of support set and query set

Baseline

Simple—transfer learning

直接把sample code运行即可

  • traing:
    对随机选择的5个任务进行正常分类训练验证/测试
  • validation / testing:
    对五个 Support Images 进行微调,并对Query Images进行推理

Slover首先从训练集中选择5个任务,然后对选择的5个任务进行正常分类训练。在推理中,模型在支持集support set图像上微调inner_train_step步骤,然后在查询集Query Set图像上进行推理。
为了与元学习Slover保持一致,基本Slover具有与元学习Slover完全相同的输入输出格式

def BaseSolver(model,optimizer,x,n_way,k_shot,q_query,loss_fn,inner_train_step=1,inner_lr=0.4,train=True,return_labels=False,
):criterion, task_loss, task_acc = loss_fn, [], []labels = []for meta_batch in x:# Get datasupport_set = meta_batch[: n_way * k_shot]query_set = meta_batch[n_way * k_shot :]if train:""" training loop """# Use the support set to calculate losslabels = create_label(n_way, k_shot).to(device)logits = model.forward(support_set)loss = criterion(logits, labels)task_loss.append(loss)task_acc.append(calculate_accuracy(logits, labels))else:""" validation / testing loop """# First update model with support set images for `inner_train_step` stepsfast_weights = OrderedDict(model.named_parameters())for inner_step in range(inner_train_step):# Simply trainingtrain_label = create_label(n_way, k_shot).to(device)logits = model.functional_forward(support_set, fast_weights)loss = criterion(logits, train_label)grads = torch.autograd.grad(loss, fast_weights.values(), create_graph=True)# Perform SGDfast_weights = OrderedDict((name, param - inner_lr * grad)for ((name, param), grad) in zip(fast_weights.items(), grads))if not return_labels:""" validation """val_label = create_label(n_way, q_query).to(device)logits = model.functional_forward(query_set, fast_weights)loss = criterion(logits, val_label)task_loss.append(loss)task_acc.append(calculate_accuracy(logits, val_label))else:""" testing """logits = model.functional_forward(query_set, fast_weights)labels.extend(torch.argmax(logits, -1).cpu().numpy())if return_labels:return labelsbatch_loss = torch.stack(task_loss).mean()task_acc = np.mean(task_acc)if train:# Update modelmodel.train()optimizer.zero_grad()batch_loss.backward()optimizer.step()return batch_loss, task_acc

Medium — FO-MAML

FOMAML(First-Order MAML)是MAML(Model-Agnostic Meta-Learning)的一种简化版本。MAML是一种元学习算法,旨在通过训练模型使其能够在少量新数据上快速适应新任务。FOMAML通过忽略二阶导数来简化MAML的计算过程,从而提高计算效率。它在许多情况下表现良好,尤其是在计算资源有限的情况下。然而,它也可能在某些任务上表现不如完整的MAML。

MAML的核心思想是通过在多个任务上进行训练,使得模型能够在面对新任务时,只需少量数据就能快速收敛到一个好的参数配置。具体来说,MAML的训练过程包括两个层次的优化:

  • 内层优化(Inner Loop):在每个任务上进行少量的梯度更新,以适应该任务。

  • 外层优化(Outer Loop):在所有任务上进行梯度更新,以优化模型的初始参数,使得模型在面对新任务时能够快速适应。

""" Inner Loop Update """
grads = torch.autograd.grad(loss, fast_weights.values(), create_graph=False) # create_graph=False:这个参数表示在计算梯度时不创建计算图。在FOMAML中,我们只关心一阶导数,因此不需要创建计算图fast_weights = OrderedDict((name, param - inner_lr * grad)for ((name, param), grad) in zip(fast_weights.items(), grads))""" Outer Loop Update """# TODO: Finish the outer loop update# raise NotimplementedErrormeta_batch_loss.backward()optimizer.step()

Strong — MAML

""" Inner Loop Update """
grads = torch.autograd.grad(loss, fast_weights.values(), create_graph=True)fast_weights = OrderedDict((name, param - inner_lr * grad)for ((name, param), grad) in zip(fast_weights.items(), grads))""" Outer Loop Update """# TODO: Finish the outer loop update# raise NotimplementedErrormeta_batch_loss.backward()optimizer.step()

相关文章:

李宏毅2023机器学习HW15-Few-shot Classification

文章目录 LinkTask: Few-shot ClassificationBaselineSimple—transfer learningMedium — FO-MAMLStrong — MAML Link Kaggle Task: Few-shot Classification The Omniglot dataset background set: 30 alphabetsevaluation set: 20 alphabetsProblem setup: 5-way 1-sho…...

API安全推荐厂商瑞数信息入选IDC《中国数据安全技术发展路线图》

近日,全球领先的IT研究与咨询公司IDC发布报告《IDC TechScape:中国数据安全技术发展路线图,2024》。瑞数信息凭借其卓越的技术实力和广泛的行业应用,被IDC评选为“增量型”技术曲线API安全的推荐厂商。 IDC指出,数据安…...

1.5 计算机网络的性能指标

参考:📕深入浅出计算机网络 目录 速率 带宽 吞吐量 时延 时延带宽积 往返时间 利用率 丢包率 速率 速率是指数据的传送速率(即每秒传送多少个比特),也称为数据率(Data Rate)或比特率&am…...

【已解决】IDEA鼠标光标与黑块切换问题,亲测有效

前言 前两天我妹妹说她室友的idea光标变成黑块状了,解决不了跑来问我,这是刚入门开发者经常遇到的问题,这篇文章介绍一下这两种方式,方便刚入门的小伙伴儿们更清楚地了解idea,使用idea。 希望这篇文章能够帮助到遇到…...

记一次sql查询优化

记一次sql查询优化 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 今天测试环境发现一个问题,就是测试同事在测试的时候,发现cpu一直居高不下,然…...

str函数的模拟(包括strn函数的模拟)

首先先说这些函数引用的头文件是<string.h> 1.strlen函数 int my_strlen(char* s1) { //这里只用最难的方法 if (*s1) { return my_strlen(s1 1) 1; } else return 0; } 这里使用了递归的方法&#xff08;不创建新的变量&#xff0…...

畅阅读微信小程序

畅阅读微信小程序 weixin051畅阅读微信小程序ssm 摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用j…...

RHEL7(RedHat红帽)软件安装教程

目录 1、下载RHEL7镜像 2、安装RedHat7 注&#xff1a;如果以下教程不想看&#xff0c;可以远程控制安装V:OYH-Cx330 【风险告知】 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演…...

CC 攻击:一种特殊的 DDoS 攻击

引言 分布式拒绝服务&#xff08;Distributed Denial of Service&#xff0c;简称 DDoS&#xff09;攻击是指攻击者利用多台计算机或其他网络资源对目标发起大量请求&#xff0c;使目标服务器不堪重负&#xff0c;无法正常响应合法用户的请求。CC&#xff08;Challenge Collap…...

掌上高考爬虫逆向分析

目标网站 aHR0cHM6Ly93d3cuZ2Fva2FvLmNuL3NjaG9vbC9zZWFyY2g/cmVjb21zY2hwcm9wPSVFNSU4QyVCQiVFOCU4RCVBRg 一、抓包分析 二、逆向分析 搜索定位加密参数 本地生成代码 var CryptoJS require(crypto-js) var crypto require(crypto);f "D23ABC#56"function v(t…...

忘了SD吧,现在是Flux的时代

Stable Diffusion大量人员离职&#xff0c;不过离职后核心人员依然从事相关工作&#xff0c;Flux就是SD的原班人马创作的。 在SD3后推出不久&#xff0c;Flux横空出世。 可以说&#xff0c;优秀的Flux和付费版的MJ效果相差不大&#xff08;前提是配置足够高&#xff0c;能进行…...

服务器安装openssh9.9p1

11.81.2.19 更新 SSL 备份原有配置 1.1 查看 openssl 版本 openssl version OpenSSL 1.0.2k-fips 26 Jan 20171.2 查看 openssl 路径 whereis openssl openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz1.3 备份 op…...

Spring Boot集成Redis Search快速入门Demo

1.什么是Redis Search&#xff1f; RedisSearch 是一个基于 Redis 的搜索引擎模块&#xff0c;它提供了全文搜索、索引和聚合功能。通过 RedisSearch&#xff0c;可以为 Redis 中的数据创建索引&#xff0c;执行复杂的搜索查询&#xff0c;并实现高级功能&#xff0c;如自动完…...

提升工作效率神器

这五款软件让你事半功倍 在当今快节奏的社会中&#xff0c;提高工作效率成为了每个人追求的目标。而在这个数字化时代&#xff0c;选择对的软件工具无疑是提高效率的关键。今天&#xff0c;我为大家推荐五款优秀的工作效率软件&#xff0c;帮助你在工作中事半功倍。 1、亿可达…...

统信服务器操作系统【targetcli部署】

targetcli部署方案 文章目录 功能概述功能介绍1.安装targetcli2.targetcli语法及参数说明3.示例1. 配置2.访问功能概述 SCSI 即小型计算机系统接口(Small Computer System Interface;简写:SCSI) iSCSI,internet SCSI 网络磁盘 ,提供一对一的网络存储, 主机A 提供xx存储设…...

I2C中继器TCA9517A(TI)

一、芯片介绍 本芯片是一款具有电平转换功能的双向缓冲器&#xff0c;适用于I2C和SMBus系统&#xff0c;同时支持各种拓扑结构的扩展使用。芯片支持SCL和SDA缓冲&#xff0c;因此允许两条总线的负载电容达到400pF。 TCA9517A的A和B侧驱动器是不同的&#xff0c;但是均可耐受5…...

基于单片机的智能电话控制系统设计

摘要: 为了能够使用电话实现电器设备的控制,文中通过单片机及双音多频解码集成电路,使用用 户通过电话输入相应的指令就能够实现远程设备的智能化控制。文章主要对系统的构成、软件及 硬件设计进行了简单的介绍,并且对其中的电路进行了简单的说明,比如语音提示、双音频解…...

Go 综合题面试题

1. Golang 中 make 和 new 的区别&#xff1f; #make 和 new 都用于内存分配1&#xff1a;接收参数个数不一样&#xff1a; new() 只接收一个参数&#xff0c;而 make() 可以接收3个参数2&#xff1a;返回类型不一样&#xff1a; new() 返回一个指针&#xff0c;而 make() 返回…...

【Python报错已解决】AttributeError: ‘Tensor‘ object has no attribute ‘kernel_size‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...

Spring MVC 参数校验 总结

1. 简介 Sping MVC提供了参数校验的方便注解。 2.代码 在pom.xml中添加依赖&#xff1a; <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>8.0.0.Final</version&g…...

2025最权威的AI写作方案横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当人工智能技术于当下迅猛发展之际&#xff0c;对于企业来讲&#xff0c;核心挑战其中之一便…...

医疗设备晶振精度:从ppm偏差到诊断治疗安全的关键影响

1. 项目概述&#xff1a;从一颗“心跳”说起在医疗设备这个对可靠性要求近乎苛刻的领域&#xff0c;我们常常关注传感器精度、算法鲁棒性、材料生物相容性这些显性指标。然而&#xff0c;有一个看似不起眼、却如同设备“心跳”般至关重要的基础元件——晶体振荡器&#xff0c;也…...

Inkscape实战:用蒙版给你的Logo或文字快速添加酷炫的渐变效果

Inkscape蒙版进阶&#xff1a;打造专业级渐变Logo的5种创意技法 在矢量设计领域&#xff0c;一个普通的Logo与令人眼前一亮的作品之间&#xff0c;往往只差一层巧妙的渐变蒙版。作为开源矢量图形编辑器的标杆&#xff0c;Inkscape的蒙版功能远不止于基础遮罩——当它与渐变工具…...

CH348芯片全平台驱动实战:从Windows Server到树莓派Linux,一次搞定8串口配置

CH348芯片全平台驱动实战&#xff1a;从Windows Server到树莓派Linux&#xff0c;一次搞定8串口配置 工业自动化、物联网网关、多设备调试等场景中&#xff0c;工程师常面临一个核心痛点&#xff1a;如何在各类操作系统环境下高效管理多串口设备。南京沁恒微电子的CH348芯片以其…...

微信好友关系检测工具完整指南:如何快速发现谁删除了你

微信好友关系检测工具完整指南&#xff1a;如何快速发现谁删除了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

5分钟解锁虚拟多屏生产力:Rust驱动打造Windows虚拟显示器终极方案

5分钟解锁虚拟多屏生产力&#xff1a;Rust驱动打造Windows虚拟显示器终极方案 【免费下载链接】virtual-display-rs A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10. Works with VR, obs, streaming software, etc 项目地址: htt…...

CircuitJS1:如何在浏览器中免费创建电子电路仿真

CircuitJS1&#xff1a;如何在浏览器中免费创建电子电路仿真 【免费下载链接】circuitjs1 Electronic Circuit Simulator in the Browser 项目地址: https://gitcode.com/gh_mirrors/ci/circuitjs1 CircuitJS1是一款强大的开源电子电路仿真工具&#xff0c;让你直接在浏…...

Godot-MCP终极指南:如何用AI助手5倍提升Godot游戏开发效率

Godot-MCP终极指南&#xff1a;如何用AI助手5倍提升Godot游戏开发效率 【免费下载链接】Godot-MCP An MCP for Godot that lets you create and edit games in the Godot game engine with tools like Claude 项目地址: https://gitcode.com/gh_mirrors/god/Godot-MCP 在…...

ASML财报解析:EUV光刻机如何驱动半导体产业高增长

1. 财报数据深度拆解&#xff1a;高毛利与利润倍增的背后ASML刚刚发布的第二季度财报&#xff0c;无疑是全球半导体产业的一剂强心针。当看到毛利率稳稳站在50%以上&#xff0c;每股净利润几乎翻倍增长时&#xff0c;我第一反应不是惊讶&#xff0c;而是“果然如此”。这组数据…...

无王无帝定乾坤,来自田间第一人 海棠山铁哥立标兴文脉

无王无帝定乾坤 ——来自田间第一人 一、破题&#xff1a;王权文脉之弊 旧序新局依附王权扎根民间权贵定义苍生共塑礼制浮华守心向善阶级垄断平等普惠文脉若随王朝而兴&#xff0c;必随王朝而竭&#xff1b; 唯有根植人心&#xff0c;方可生生不息。 二、田间崛起&#xff1a;…...