NLP任务中的Checkpoint秘籍:从BERT到GPT的模型保存与恢复技巧

Hugging Face实战指南:NLP模型开发、微调与部署全流程 Hugging Face 是当前最主流的自然语言处理(NLP)开源平台,其核心价值在于将复杂模型封装为可复用、可协作、可追溯的工程化组件。它基于Transformer架构统一了模型加载、分词、训练与推理协议,显著降低BERT、RoBERTa等大模型的使用门槛。通过Model Hub、Transformers库、Datasets和Tokenizers四大支柱,它实现了从数据预处理、模型微调到API部署的端到端支持,广泛应用于文本分类、语义相似度、命名实体识别等任务。本文聚焦真实项目落地,涵盖环境锁定、模型选型 阅读详情

NLP任务中的Checkpoint秘籍:从BERT到GPT的模型保存与恢复技巧

在自然语言处理领域,Transformer架构的崛起彻底改变了游戏规则。BERT、GPT等模型不仅在各项基准测试中刷新记录,更在实际应用中展现出惊人潜力。然而,这些模型的训练往往需要数天甚至数周时间,消耗大量计算资源。想象一下,当你花费三天三夜训练的模型因为一个意外中断而前功尽弃——这种痛苦,每个NLP从业者都深有体会。

Checkpoint技术就是这场持久战中的"存档点",它不仅仅是简单的模型保存,更是一套完整的训练管理策略。本文将带你深入探索NLP任务中Checkpoint的高级应用技巧,从基础原理到实战经验,帮助你在模型训练中游刃有余。

1. Checkpoint的核心价值与NLP特性

在NLP任务中,Checkpoint的作用远不止于防止训练中断。以Transformer架构为例,其训练过程往往呈现明显的阶段性特征:

  • 预训练阶段:可能需要数周时间,Checkpoint是唯一的安全保障
  • 微调阶段:需要频繁尝试不同超参数组合,Checkpoint支持快速回滚
  • 迁移学习:优秀Checkpoint可以成为新任务的起点

NLP模型Checkpoint的特殊性:

  1. 参数规模庞大:BERT-base就有1.1亿参数,单个Checkpoint可能占用数GB空间
  2. 训练成本高昂:GPT-3的单次训练成本超过千万美元
  3. 迁移价值高:预训练Checkpoint可适配多种下游任务

实际案例:某研究团队在训练多语言BERT时,因未合理设置Checkpoint,导致服务器故障后损失两周训练进度,直接经济损失超过5万美元。

2. 主流框架中的Checkpoint实现

2.1 PyTorch的灵活控制方案

PyTorch提供了最灵活的Checkpoint控制方式,适合需要精细管理的场景:

import torch
from transformers import BertForSequenceClassification

# 自定义保存函数
def save_checkpoint(epoch, model, optimizer, loss, path):
    torch.save({
        'epoch': epoch,
        'model_state_dict': model.state_dict(),
        'optimizer_state_dict': optimizer.state_dict(),
        'loss': loss,
        'config': model.config  # 保存模型配置
    }, path)

# 加载时恢复完整训练状态
def load_checkpoint(path, model, optimizer):
    checkpoint = torch.load(path)
    model.load_state_dict(checkpoint['model_state_dict'])
    optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
    return checkpoint['epoch'], checkpoint['loss']

关键技巧:

  • 保存完整的训练上下文(包括学习率调度器状态)
  • 使用model.config保存模型架构信息
  • 定期清理旧Checkpoint避免存储爆炸

2.2 Transformers库的智能管理

HuggingFace Transformers库内置了更智能的Checkpoint策略:

from transformers import TrainingArguments, Trainer

training_args = TrainingArguments(
    output_dir='./results',
    save_strategy="steps",  # 按步数保存
    save_steps=500,        # 每500步保存一次
    save_total_limit=3,    # 只保留最新的3个Checkpoint
    load_best_model_at_end=True,
    metric_for_best_model="eval_loss",
    greater_is_better=False
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset
)

参数优化建议:

参数推荐值适用场景
save_strategy"steps"大规模预训练
save_steps500-2000根据训练时长调整
save_total_limit3-5平衡存储与安全性
load_best_model_at_endTrue微调任务

3. NLP专属Checkpoint优化策略

3.1 分层保存技术

针对Transformer模型的特点,可以采用分层保存策略:

  1. 全模型保存:完整保存所有参数(适用于关键节点)
  2. 参数差异保存:只保存与前次Checkpoint的差异(节省空间)
  3. 核心层保存:重点保存注意力层和输出层(迁移学习友好)
# 示例:选择性保存关键层
def save_essential_layers(model, path):
    essential_state = {
        k: v for k, v in model.state_dict().items() 
        if 'attention' in k or 'output' in k
    }
    torch.save(essential_state, path)

3.2 Checkpoint质量评估体系

建立Checkpoint评分机制,自动保留最优版本:

  1. 验证集表现:记录每个Checkpoint的评估指标
  2. 训练稳定性:检查loss曲线的平滑程度
  3. 梯度健康度:分析参数更新的幅度分布

评估指标表示例:

CheckpointEpochEval LossGradient Norm保存决策
ckpt_100020.451.2e-3保留
ckpt_200040.380.8e-3保留
ckpt_300060.421.5e-3删除

4. 工业级Checkpoint管理系统

4.1 分布式训练中的Checkpoint

在多机多卡环境下,Checkpoint需要特殊处理:

# 使用DDP时正确的保存方式
torch.save({
    'model_state_dict': model.module.state_dict(),  # 注意.module
    'optimizer_state_dict': optimizer.state_dict(),
}, 'ddp_checkpoint.pth')

常见问题解决方案:

  • 使用共享存储确保所有节点可访问
  • 添加文件锁避免写入冲突
  • 压缩Checkpoint减少网络传输

4.2 Checkpoint版本控制

借鉴软件工程的版本管理思想:

  1. 语义化版本:v1.0.0-预训练-base-20230601
  2. 变更日志:记录每个版本的关键调整
  3. 分支管理:不同实验方向的Checkpoint独立保存

推荐目录结构:

checkpoints/
├── pretrain/
│   ├── v1.0.0-bert-base-20230601/
│   └── v1.1.0-bert-large-20230615/
└── finetune/
    ├── sentiment-analysis/
    └── ner/

5. 前沿Checkpoint技术探索

5.1 参数高效Checkpoint

增量Checkpoint技术:

  • 只保存变化的参数(适合LoRA等适配器方法)
  • 使用delta编码压缩存储
def save_delta_checkpoint(model, prev_state, path):
    current_state = model.state_dict()
    delta = {k: current_state[k] - prev_state.get(k, 0) for k in current_state}
    torch.save(delta, path)

5.2 持续学习中的Checkpoint应用

在持续学习场景下,Checkpoint成为知识传递的桥梁:

  1. 任务特定标记:在Checkpoint中嵌入任务元数据
  2. 知识蒸馏支持:用旧任务Checkpoint指导新任务
  3. 灾难性遗忘防护:定期回滚到关键Checkpoint

在最近一个多语言翻译项目中,我们通过精心设计的Checkpoint轮换策略,将模型遗忘率降低了40%,同时存储成本控制在预算范围内。

GPT工程实战指南:自回归架构、KV缓存与推理优化深度解析 大语言模型(LLM)的工业落地核心在于理解其底层生成机制——自回归语言建模不仅是训练目标,更决定了推理效率、内存占用与系统稳定性。从Transformer的注意力计算原理出发,GPT系列通过纯自回归范式实现流式生成与KV缓存复用,显著降低延迟与显存压力;而位置编码(如RoPE)、上下文窗口扩展、FlashAttention等技术,则直接关联长文本处理能力与服务吞吐。在真实NLP工程中,这些设计选择深刻影响微调策略、API响应速度及OOM风险。本文聚焦GPT在生产环境中的关键决策点:如何选型、调参、防崩与优化 阅读详情

相关推荐

大模型训练五大核心难点:并行效率、硬件容错、数据清洗、收敛控制与评估体系

大模型训练并非简单堆叠参数,而是涉及分布式系统、硬件工程与数据科学的深度交叉领域。其本质难点在于:在千卡级GPU集群上实现高效并行计算,需突破AllReduce通信瓶颈与MFU利用率限制;应对硬件脆弱性放大的现实,构建具备Straggler识别与热替换能力的高可用训练框架;解决原始数据中语义重复、低质噪声与污染不可逆问题,依赖MinHash+LSH与Sentence-BERT等工业级清洗技术;理解Loss非单调收敛的反直觉特性,采用梯度裁剪、动态学习率与数据健康检查等鲁棒训练策略;并建立脱离榜单幻觉的真实评

weixin_30631587的博客 433

HuggingFace Trainer隐藏技巧:用TensorBoard同时监控3种自定义指标

本文深入探讨了HuggingFace Trainer与TensorBoard的深度集成技巧,帮助开发者突破默认监控的局限。通过自定义回调函数和修改TrainingArguments,文章详细展示了如何同时监控自定义损失函数、梯度统计分布以及GPU内存使用情况,实现训练过程的精细化、透明化管理,有效提升模型调试与调优效率。

m5n6o7的博客 904

知识蒸馏技术详解:从核心原理到工程实践,实现模型高效压缩与部署

模型压缩与优化是深度学习工程化落地的关键技术,旨在解决大模型在资源受限环境下的部署难题。其核心原理是通过知识迁移,将复杂模型(教师模型)学到的丰富表征与决策知识,高效传递给轻量模型(学生模型),而非简单的参数裁剪。这项技术的核心价值在于,能在几乎不损失精度的前提下,显著提升模型推理速度、减少内存占用,是实现移动端、边缘端AI应用的关键。具体实现中,通过引入温度参数调节知识浓度,并设计融合软硬标签的损失函数,完成知识的高效转移。其应用场景广泛,从计算机视觉的图像分类、目标检测,到自然语言处理中的BERT模型压

weixin_30598225的博客 457

交换机测试全流程解析:从基础功能到高级场景的实战指南

本文提供了一份详尽的交换机测试全流程实战指南,涵盖从开箱硬件检查、基础功能验证到性能压测、高级功能与稳定性检测等关键环节。文章深入解析了吞吐量、时延、丢包率等核心性能指标的测试方法,并强调了长期稳定性检测与冗余性验证的重要性,旨在帮助网络工程师构建可靠、高效的网络基础设施。

win55的博客 1017

BLOOM开源大模型:去中心化协作与多语言大模型实践指南

大语言模型(LLM)正从商业黑箱走向开放可复现的科研基础设施。BLOOM作为首个1760亿参数、全链路开源的大模型,以Roots语料库、DeepSpeed ZeRO-3分布式训练和跨语言Transformer架构为核心,系统性解决了数据主权、训练可审计性与多语言公平性三大基础问题。其设计不追求极致性能,而强调模块可分工、过程可验证、结果可复现——这使其成为高校NLP教学、轻量化部署验证及大模型底层原理研究的理想‘教学标本’。尤其在低资源语言支持、版权合规语料构建和消费级硬件适配(如RTX 4090+QLoR

chunqingtai2922的博客 484

LoRA实战精要:从原理到生产级大模型微调

LoRA(Low-Rank Adaptation)是Parameter-Efficient Fine-Tuning(PEFT)中最主流的轻量微调技术,其核心在于对原始权重施加可控的低秩扰动,而非全参数更新。它通过矩阵分解(B·A)实现梯度高效传播与显存确定性控制,在7B级大模型上仅需百MB额外参数即可完成任务适配。相比Adapter、Prefix Tuning等方案,LoRA具备更干净的梯度路径、更强的任务隔离性及零侵入式框架兼容性,已成为金融、医疗、法律等垂直领域落地LLM的关键工程选择。本文聚焦真实场景

weixin_30420305的博客 474

深度学习中的Checkpoint是什么?

深度学习中的Checkpoint是什么?

诸神缄默不语的博客 4666

图基础模型(GFM)落地实战:预训练、架构与部署的四大硬骨头

图基础模型(GFM)是面向非欧几里得数据的通用表征范式,其核心原理在于通过结构感知的预训练目标(如拓扑距离回归、子图模式识别)学习图的拓扑语义与关系逻辑,而非简单迁移语言模型的序列建模思路。技术价值体现在跨任务泛化能力与工业场景适配性上,尤其在分子建模、金融风控、交通预测等强结构依赖领域具备不可替代性。然而真实落地面临四大瓶颈:预训练目标与下游任务脱节、Graph Transformer在大规模稀疏图上的计算反噬、高质量图数据孤岛化、以及动态图部署中的漂移与可解释性缺失。本文聚焦GFM从理论到产线的关键断层

aobu0171的博客 442

从零加载预训练模型:tensorflow/models中TF-Hub与Checkpoint加载完全教程

本教程基于 **TensorFlow Model Garden(tensorflow/models 仓库)**——一个用 TensorFlow 构建的官方模型集合,收录 BERT、ALBERT、ELECTRA 等主流预训练模型。你将学会 **加载预训练模型** 的两条核心路径:**TF-Hub(SavedModel)** 与 **Checkpoint 权重文件**,几行配置即可开始微调与推理,无需

gitblog_00693的博客 403

【十万字拆解】从零开始实现GPT-2(完整版)

本文是一篇 14 万字、从零硬核实现 GPT 的保姆级指南。内容全面覆盖四个阶段:①从最基础的 Bigram 语言模型切入,跑通数据处理与训练闭环;②仿照 Transformer 架构,深度研究 Multi-Head Attention、残差网络、LayerNorm 及 Dropout 的底层数学与代码实现;③从零构建BPE 分词器,对齐 GPT-2 规范;④从头搭建 GPT-1/2 工业级预训练流程,包含混合精度、梯度累积等十余项硬件级工程调优,并在 AutoDL 算力平台上从0开始训练!适合所有层次!

Pi_Nick的博客 1235

即梦AI使用教程

摘要: 即梦AI是字节跳动推出的多模态AI创作平台,整合图片、视频、智能编辑功能,基于OmniHuman模型支持中英日三语操作。核心特点包括: 技术升级:4.0版本强化中文语义理解与微观表现力,新增故事分镜生成; 创作功能:支持文本/图片转视频、AI对口型、商业级抠图与多图层融合; 用户友好:移动/网页双端适配,灵感社区复用提示词,剪映生态无缝衔接; 应用场景:覆盖电商换装、虚拟主播、设计融合等需求,未来将开放API拓展生态。 (字数:149)

专业深耕,技术前沿 6324

LoRA原理与实战:GPT/BERT架构下的低秩适配可视化实现

LoRA(Low-Rank Adaptation)是一种高效的大模型参数高效微调技术,其核心是通过低秩矩阵分解ΔW = A×B,在冻结主干权重的前提下注入可训练增量参数。它本质是对Transformer中注意力与前馈子模块的特定投影层(如W_v、W_q、W_up)进行定向扰动,兼顾计算效率与任务适配能力。相比全量微调,LoRA显著降低显存占用与训练成本,已成为垂直领域NLP落地的关键技术路径。本文深入解析LoRA在Decoder-only(GPT类)与Encoder-only(BERT类)两大主流架构中的差

weixin_34367257的博客 517

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1007

05阶段:NLP自然语言处理基础(2)

本文系统讲解了NLP中的迁移学习,重点介绍了fastText工具的使用及其模型原理。主要内容包括: fastText工具概述:fastText是Facebook开发的NLP工具包,具有文本分类和词向量训练两大功能,优势在于速度快、精度高。其安装简单,通过pip即可完成。 fastText模型架构:基于类似CBOW的三层结构,使用层次softmax和负采样提升效率。层次softmax通过哈夫曼树实现多类别高效分类;负采样通过随机选择部分负样本来降低计算量。 应用实践:详细演示了使用fastText进行文本分类

专注前端开发领域,深耕 Python AI Agent应用开发,热爱探索 Web 与人工智能的前沿技术。 505

从编解码芯片看Tesla T4的隐藏实力:双NVDEC如何实现70路1080P解码?

本文深入剖析了英伟达Tesla T4显卡的隐藏实力,重点解读其独特的双NVDEC硬件解码器设计如何突破性能瓶颈。通过分析Turing架构、对比HEVC/H.264解码差异,并结合驱动与SDK优化,揭示了实现高达70路1080P视频流并发解码的原理与实战配置,为云游戏、直播转码等高并发场景提供高效解决方案。

weixin_29209801的博客 491

Matlab双目相机标定

1 概述 现在有许多双目相机在出厂时就已经标定好了,用户拿到手后可以直接使用,例如Intel Realsense系列。但是有些相机出厂的时候并没有完成标定工作,因而这个时候就需要我们自己来标定。由于笔者曾改装过一个双目相机,最远可以测至50m,因此有一定的心得体会想给大家分享一下。本文主要介绍双目相机标定的整个过程,以及导出标定数据的方法。 相机标定主要分为手动标定和自动标定,手动标定比较繁琐,这里主要介绍基于matlab工具箱的自动标定方式来对双目相机进行标定。具体的相关标定细节也可以参照这篇博客:m

weixin_46133643的博客 2万+

NLP技术雷达图:2021年Q1开源模型与工程实践指南

自然语言处理(NLP)作为人工智能的核心分支,其发展高度依赖开源模型、可复现工具链与高质量多语种数据。理解大语言模型的可及性设计原理,有助于评估从GPT-Neo到现代LLM的技术演进路径;掌握Helsinki-NLP等数据基石的构建逻辑与工程适配方法,是实现低资源语言落地的关键前提。这类技术不仅支撑文本生成、机器翻译等基础任务,更深度赋能RAG架构、表格问答、图神经网络等前沿应用场景。本文以一份精准锚定2021年Q1技术拐点的NLP领域‘雷达图’为线索,解析GPT-Neo的分布式训练实践、Tatoeba数据

weixin_34347651的博客 331

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8353

模型Checkpoints、HF(Hugging Face)和MS(MindSpore)

方面主要用途快速获取预训练模型,支持NLP任务深度学习框架,支持模型训练和部署Checkpoint来源社区共享的预训练模型(如BERT、GPT)用户自行训练保存的模型参数安装方式+ 在线加载+ 本地文件操作加载方法from_pretrained("模型名")自动下载+ 手动映射到模型结构。

jiang_changsheng的博客 726

告别重启烦恼:用WSL2让Docker和VMware在Win10上真正共存

本文详细介绍了如何在Windows 10系统上,借助WSL2实现Docker与VMware的真正共存,彻底告别以往需要反复重启切换的烦恼。通过启用Hyper-V兼容模式并进行正确配置,开发者无需重启即可同时高效运行容器和虚拟机,显著提升开发与测试工作流的连续性和效率。

salt9的博客 990

【系统架构设计师】预测试卷四:综合知识(75道选择题)

本文整理系统架构设计师考试高频考点,涵盖计算机系统基础、计算机网络、数据库、软件工程与UML四大模块,共28道典型题目。重点解析Cache局部性原理、RISC/CISC区别、TCP三次握手、B+树索引优势、CAP定理、螺旋模型特点等核心概念,并标注易错选项,帮助考生快速掌握解题思路。 关键词:系统架构、Cache、RISC、TCP、B+树、CAP定理、螺旋模型

数据知道的博客 550

从零构建大语言模型:Happy-LLM项目实战指南与学习路径

如果你正在寻找一个能让你从零开始,真正理解并动手构建大语言模型的教程,而不是仅仅停留在调用API的层面,那么今天要介绍的这个项目,绝对值得你花时间深入了解。它就是由国内知名开源组织Datawhale推出的《Happy-LLM》项目。这个项目在GitHub上已经获得了超过31.7k的星标,热度极高,被许多开发者誉为最适合新手系统入门AI大模型的“神级”教程。 这个项目的核心价值在于“系统性”和“实践性”。它不是一个简单的API使用手册,而是一套从NLP基础概念出发,逐步深入到Transformer架构、预训练

weixin_33882452的博客 382

从零开始讲DDR(8)——AXI 接口MIG 使用(1)

我们简单拆解了MIG AXI接口中测试文件的整体框架,首先在sim_tb_top.sv文件中例化了DDR模型和example_top。在example_top中,又例化了MIG IP和一个流量产生器ddr4_v2_2_8_axi_tg_top。在ddr4_v2_2_8_axi_tg_top中的主要功能是分别例化了boot_mode_gen,prbs_mode_gen,custom_mode_gen和axi_opcode_gen。

apple_53311083的博客 1594

大模型技术解析:从Transformer到行业应用实践

Transformer架构作为现代自然语言处理的基石,通过自注意力机制实现了对长距离依赖的高效建模。其核心原理是将输入序列映射为查询、键、值矩阵,通过缩放点积计算得到注意力权重。这种机制不仅解决了RNN的梯度消失问题,还支持并行计算,为GPT、BERT等大模型奠定了基础。在工程实践中,大模型通过分布式训练、混合精度计算等技术突破参数规模限制,在智能客服、医疗问答等场景展现强大能力。赵宇教授新书系统梳理了LLM技术体系,包含Transformer原理、GPT-4案例及金融医疗等落地经验,特别适合需要掌握大模型

weixin_33898233的博客 353

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

廖雪峰Python教程[完整版]

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

第三章:Transformer架构详解

Transformer架构详解摘要 Transformer是2017年提出的革命性模型,彻底改变了序列建模方式。与RNN/LSTM不同,它完全基于注意力机制,解决了传统模型的三大痛点:序列依赖导致的无法并行训练、长期依赖问题和计算效率低下。Transformer采用编码器-解码器结构,核心创新包括: 自注意力机制:允许模型直接建立任意位置间的关联 多头注意力:并行学习多种注意力模式 位置编码:弥补无循环结构的位置信息缺失 全并行计算:显著提升训练速度 Transformer的并行性使其计算速度比RNN快数十

云天空的博客 240

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

AI大模型开发全流程:从基础到部署实战指南

人工智能领域的Transformer架构已成为大模型开发的核心技术,其自注意力机制和并行计算特性显著提升了模型性能。在工程实践中,掌握PyTorch框架和CUDA并行计算是构建高效训练系统的关键,而混合精度训练和分布式计算技术则能有效解决显存限制问题。特别是在医疗、金融等垂直领域,结合LoRA微调和模型量化技术,可以在保持精度的同时大幅降低部署成本。本指南通过系统化的学习路径设计,帮助开发者从数学基础、架构原理到训练优化、部署应用,全面掌握大模型开发的核心技能与最新工程实践。

weixin_30644369的博客 363

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: Remix部署智能合约踩坑记:Gas estimation failed的终极解决方案(附Ganache配置)
下一篇: 通达信强龙起势指标实战指南:如何用5个关键信号捕捉主升浪
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值