[pytorch]FixMatch代码详解(超详细)

VIP[pytorch]FixMatch代码详解(超详细)
FixMatch代码详解-训练过程参数数据产生构建模型训练参数设置weight decay(权值衰减)学习率衰减(learning rate decay)指数移动平均(EMA)model训练过程运行结果上一篇大概讲了数据加载的过程,这一篇更进一步,分析一下训练是怎样进行的上一篇链接: [pytorch]FixMatch代码详解-数据加载参数所有的参数我都默认使用作者给出的例子:python train.py --dataset cifar10 --num-labeled 4000 --arch w
开通可读全文 ·1w 人阅读
最低0.47元/天 解锁文章

上一篇大概讲了数据加载的过程,这一篇更进一步,分析一下训练是怎样进行的
上一篇链接: [pytorch]FixMatch代码详解-数据加载

思维导图如下链接,非常详细的写出了代码的整体框架
思维导图

参数 default parameters

数据集链接
4000个带标签的数据集,也就是每个类400张带标签的数据

所有的参数我都默认使用作者给出的例子:

python train.py --dataset cifar10 --num-labeled 4000 --arch wideresnet --batch-size 64 --lr 0.03 --expand-labels --seed 5 --out results/cifar10@4000.5

其运行时每个参数的值如下:

INFO - __main__ -   {
   
   'T': 1, 'amp': False, 'arch': 'wideresnet', 'batch_size': 64, 'dataset': 'cifar10', 'device': device(type='cuda', index=0), 'ema_decay': 0.999, 'eval_step': 1024, 'expand_labels': True, 'gpu_id': 0, 'lambda_u': 1, 'local_rank': -1, 'lr': 0.03, 'mu': 7, 'n_gpu': 1, 'nesterov': True, 'no_progress': False, 'num_labeled': 4000, 'num_workers': 4, 'opt_level': 'O1', 'out': 'results/cifar10@4000.5', 'resume': '', 'seed': 5, 'start_epoch': 0, 'threshold': 0.95, 'total_steps': 1048576, 'use_ema': True, 'warmup': 0, 'wdecay': 0.0005, 'world_size': 1}

然后我们将这些参数带入,看看每一步是怎样运行的.

数据产生 generate data

首先,是产生带标签和不带标签数据的索引,其在cifar.py文件中的代码分析见上篇

base_dataset = datasets.CIFAR10(
        './CIFAR10', train=True, download=True)
labels = base_dataset.targets
label_per_class = 4000 // 10
labels = np.array(labels)
labeled_idx = []
# unlabeled data: all data (https://github.com/kekmodel/FixMatch-pytorch/issues/10)
unlabeled_idx = np.array(range(len(labels)))
for i in range(10):
    idx = np.where(labels == i)[0]
    idx = np.random.choice(idx, label_per_class, False)
    labeled_idx.extend(idx)
labeled_idx = np.array(labeled_idx)
print('number labeled_idx =',len(labeled_idx))
assert len(labeled_idx) == 4000

if True or 4000 < 64:
    num_expand_x = math.ceil(
        64 * 1024 / 4000)  #16.384 = 17
    labeled_idx = np.hstack([labeled_idx for _ in range(num_expand_x)])
np.random.shuffle(labeled_idx)
print('number labeled_idx = ',len(labeled_idx))
print('number unlabeled_idx =', len(unlabeled_idx))
train_labeled_idxs = labeled_idx
train_unlabeled_idxs = unlabeled_idx

结果如下,不带标签的数据使用了所有的数据,而带标签的数据经过数据扩增之后为68000个

number labeled_idx = 4000
number labeled_idx =  68000
number unlabeled_idx = 50000

让我们看一下图片的变化
首先,是不带任何变化的原始数据图像:

train_labeled_dataset = CIFAR10SSL(
        './data', train_labeled_idxs, train=True,
        transform=transforms.ToTensor())
train_iter = iter(train_labeled_dataset)
# 可视化方法,重复执行可得到不同的图片数据
imgs, label = next(train_iter)
print(image.size) # (32, 32)
image = transforms.ToPILImage()(imgs).convert('RGB')
image.show()
print(label)

在这里插入图片描述
然后,我们使用不带数据增强的变化,也就是作者对验证集使用的图像变化. ToTensor()能够把灰度范围从0-255变换到0-1之间,而后面的transform.Normalize()则把0-1变换到(-1,1). 注意图片大小没有变化,只是我截图的时候放大了图片.

cifar10_mean = (0.4914, 0.4822, 0.4465)
cifar10_std = (0.2471, 0.2435, 0.2616)
transform_val = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean=cifar10_mean, std=cifar10_std)])
train_labeled_dataset = CIFAR10SSL(
        './data', train_labeled_idxs, train=True,
        transform=transform_val)
train_iter = iter(train_labeled_dataset)

imgs, label = next(train_iter)
print(image.size) # (32, 32)
image = transforms.ToPILImage()(imgs).convert('RGB')
image.show()
print(label)

在这里插入图片描述
然后我们看看带数据的图片所使用的数据增强(两次)

cifar10_mean = (0.4914, 0.4822, 0.4465)
cifar10_std = (0.2471, 0.2435, 0.2616)
transform_labeled = transforms.Compose([
    transforms.RandomHorizontalFlip(), #Horizontally flip the given image randomly with a given probability.
    transforms.RandomCrop(size=32,
                          padding=int(32*0.125),
                          padding_mode='reflect'),
    transforms.ToTensor(
VIP FixMatch半监督学习算法详解与PyTorch代码实现 半监督学习是解决标注数据稀缺问题的核心技术,在医疗影像、工业质检和用户行为分析等场景中具有重要价值。其核心原理在于利用无标注数据弥补有标注数据的不足,主要方法包括伪标签和一致性正则化。伪标签通过模型对高置信度预测的自训练来扩充监督信号,一致性正则化则要求模型在不同扰动下保持输出一致,但单独使用均存在误差累积或噪声学习的局限。FixMatch算法巧妙地将两者融合,对弱增强样本生成伪标签,并用固定阈值筛选高质量监督信号,指导强增强样本的学习,显著提升了半监督训练的稳定性和收敛速度。本文从工程实践角度出发,详解F 开通可读全文·324 阅读·4 点赞·8 收藏 阅读全文

相关推荐

FixMatch-pytorch:“ FixMatch”的非官方PyTorch实现

FixMatch 这是FixMatch的非官方PyTorch实施。 Tensorflow的官方实现在。 此代码仅在FixMatch(RandAugment)中可用。 结果 CIFAR10 #标签 40 250 4000 纸(RA) 86.19±3.37 94.93±0.65 95.74±0.05 这段代码 93.60 95.31 95.77 累积曲线 * 2020年11月。修复EMA问题后重新测试。 CIFAR100 #标签 400 2500 10000 纸(RA) 51.15±1.75 71.71±0.11 77.40±0.12 这段代码 57.50 72.93 78.12 累积曲线 *使用以下选项进行训练--amp --opt_level O2 --wdecay 0.001 用法 火车 通过CIFAR-10数据集的4000个标记数据训练模

FixMatch-pytorch:“ FixMatch”的非官方Pytorch代码

FixMatch-pytorch 非官方pytorch代码 NeurIPS'20。此实现可以重现结果(CIFAR10和CIFAR100),这些结果已在本文中进行了报告。此外,它还包括具有半监督和完全监督方式的训练模型(请在下面的链接中下载)。 要求 python 3.6 pytorch 1.6.0 火炬视觉0.7.0 张量板2.3.0 枕头 结果:分类准确率(%) 除了本文中半监督学习的结果外,我们还附加了完全监督学习的额外结果(50000个标签,仅支持sup)+一致性正则化(50000个标签,sup + consistency)。即使完全提供了标签,一致性正则化也提高了分类准确性。通过SGD训练轨迹中的模型的EMA(指数移动平均值)进行评估。 CIFAR10 #标签 40 250 4000 超+一致性 只吃 纸(RA) 86.19±3.37 94.93±0.65 95.

MyFixmatch:修改FixMatch的PyTorch实现

FixMatch 这是FixMatch的非官方PyTorch实施。 Tensorflow的官方实现在。 此代码仅在FixMatch(RandAugment)中可用。 结果 CIFAR10 #标签 40 250 4000 纸(RA) 86.19±3.37 94.93±0.65 95.74±0.05 这段代码 93.60 95.31 95.77 累积曲线 * 2020年11月。修复EMA问题后重新测试。 CIFAR100 #标签 400 2500 10000 纸(RA) 51.15±1.75 71.71±0.11 77.40±0.12 这段代码 57.50 72.93 78.12 累积曲线 *使用以下选项进行训练--amp --opt_level O2 --wdecay 0.001 用法 火车 通过CIFAR-10数据集的4000个标记数据训练模

保姆级教程:用CellOracle 0.10.13分析你的单细胞数据,从GRN构建到基因扰动模拟

本文详细介绍了如何使用CellOracle 0.10.13进行单细胞数据分析,从基因调控网络(GRN)构建到基因扰动模拟的全流程。通过环境配置、数据准备、GRN构建和扰动模拟等步骤,帮助研究者高效预测细胞命运决定的分子机制,特别针对实际分析中的易错点提供解决方案。

weixin_42525005的博客 422

从理论到实践:TRL去嵌入校准在国产矢量网络分析仪上的应用全解析

本文全面解析了TRL去嵌入校准技术在国产矢量网络分析仪上的应用实践,从核心算法到工程实现。详细介绍了TRL校准的数学原理、国产VNA的程控接口开发、校准件质量评估及测量不确定度控制策略,帮助工程师掌握高频器件测量的关键技术。

tech5的博客 1002

大语言模型在建筑规范自动化合规审查中的微调策略与规模效应实践

大语言模型(LLM)通过在海量文本数据上预训练,具备了强大的语言理解和生成能力。其核心原理是基于Transformer架构,通过自注意力机制捕捉长距离依赖关系。在工程实践中,为了将这种通用能力适配到建筑、法律、金融等高度专业化的垂直领域,通常需要采用领域微调技术。微调通过使用特定领域的高质量指令数据对模型参数进行更新,使其掌握专业术语、逻辑规则和任务范式,从而解决通用模型在专业场景下知识匮乏和“幻觉”问题。结合检索增强生成(RAG)技术,将动态外部知识库作为模型的“参考手册”,能进一步提升事实准确性并降低幻

weixin_30667831的博客 357

ChatGPT高效制作PPT:从内容生成到设计优化全流程

人工智能技术正在改变传统办公文档的创作方式,其中自然语言处理(NLP)与生成式AI的结合为内容创作带来了革命性突破。以ChatGPT为代表的大语言模型(LLM)能够理解复杂指令并生成结构化内容,其核心原理是通过海量数据训练获得的语义理解和文本生成能力。在办公自动化场景中,这种技术特别适合解决PPT制作中的两大痛点:内容创作耗时和逻辑架构困难。通过精心设计的提示词工程,AI可以快速输出包含核心要点、数据支撑的完整内容框架,甚至直接生成Markdown格式的代码以便快速转换为PPT。对于商业计划、项目汇报等高频

weixin_42613018的博客 480

Autosar CAN 网络管理标准文档

Autosar CAN 网络管理标准文档

蚂蚁小兵 913

【毕业设计之python系列】基于Flask的在线音乐网设计与实现

本论文旨在通过使用Python的Web框架Flask,设计和实现一个具有完整功能的在线音乐网站。该网站包括用户注册、登录、注销、歌曲上传、编辑、删除、歌单创建、编辑、删除、评论、搜索、音乐播放等功能,并针对不同用户角色(如普通用户、管理员)实现了不同的权限管理。同时,本论文还介绍了如何使用第三方API(如网易云音乐API)获取歌曲信息等技术实现。在设计上,本论文采用了MVC(Model-View-Controller)架构模式,将后端数据处理与前端展示分离,以便于代码的管理和维护。在数据库设计方面,本论文设

m0_56073435的博客 3229

使用 MATLAB/Simulink + Simscape Electrical + SimPowerSystems + Stateflow,构建一个多能互补微电网系统的动态响应仿真模型

本文详细介绍了使用MATLAB/Simulink构建多能互补微电网动态响应仿真模型的方法。文章从系统架构设计入手,包含光伏、风电、柴油发电机、锂电池储能等多种组件,重点讲解了建模过程、控制策略(下垂控制、PLL、SOC管理)和模式切换逻辑(Stateflow)。通过四种典型场景(负荷突增、光伏出力骤降、并网/孤岛切换、电动机启动)的仿真分析,验证了微电网在动态响应中的关键性能指标,并提出了高可靠性设计建议。该模型为微电网的稳定性分析和优化设计提供了有效工具,特别强调了储能系统在快速功率支撑中的重要作用。

amy_mhd的博客 151

STM32实战开发(122):基于STM32的溶解氧检测系统设计与实现

溶解氧(DO, Dissolved Oxygen)是水质检测中至关重要的指标之一,尤其是在环境监测、工业废水处理以及水产养殖等领域,溶解氧的浓度直接影响到水体的生态环境和生物的健康。电流的大小就可以用来反映水中溶解氧的浓度。本博客将详细介绍如何基于STM32微控制器开发一个智能溶解氧检测系统,内容涵盖系统的硬件设计、软件开发、优化与调试等方面,提供实际的代码实现与实验数据,并展望溶解氧检测系统在物联网环境下的应用。为了提高系统的精度,可以优化ADC的采样率,增加传感器的校准频率,或使用更加精确的传感器。

2201_76125393的博客 1597

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: [pytorch]FixMatch代码详解-数据加载
下一篇: [pytorch] Kaggle大型图像数据集 数据分析+可视化

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
liyihao76
博客等级 码龄9年 295粉丝 33原创
评论 27
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值