栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【PyTorch】08训练技巧

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【PyTorch】08训练技巧

8 PyTorch训练技巧 8.1 模型保存与加载

模型保存与加载,就是序列化与反序列化,将模型持久化保存

【PyTorch】7.1 模型保存与加载

  • torch.save()

    功能:模型保存,即序列化

    参数说明:

    • obj:对象
    • f:输出路径
  • torch.load()

    功能:模型加载,即反序列化

    参数说明:

    • f:文件路径
    • map_location:指定存放位置,cpu or gpu

模型保存的两种方法:

官方推荐方法2:方法2比方法1速度快,但方法2只保存了模型参数,加载时需将参数加入网络(预先定义一个模型【模型必须与原模型相同的构造】)中才能获得完整模型

8.2 模型断点续训练

模型和优化器会随着迭代训练而变化,优化器中的缓存如momentum数值会改变

断点续训练可以使得意外中断的训练重新恢复之前的训练

【PyTorch】7.1 模型断点续训练

8.3 模型微调(Finetune)

Transfer Learning(迁移学习):机器学习分支,研究源域(source domain)的知识如何应用到目标域(target domain)

【PyTorch】7.2 模型Finetune


模型微调的步骤:

  1. 获取预训练模型参数
  2. 加载模型(load_state_dict)
  3. 修改输出层

模型微调的训练方法:【让特征提取层的参数不更新或者缓慢更新】

  1. 固定预训练的参数(requires_grad=Flase; lr=0)
  2. Features Extractor(特征提取–卷积层)设置较小学习率(params_group)

8.4 GPU的使用

CPU(Central Processing Unit,中央处理器):主要包括控制器和运算器

GPU(Graphics Processing Unit,图形处理器):处理统一的、无依赖的大规模数据运算


  • to函数:转换数据类型/设备

    • **tensor.to(args,*kwargs)
    • **module.to(args,*kwargs)

    区别:张量不执行inplace操作,必须重新赋值,而模型会执行inplace操作

  • torch.cuda常用方法

    • torch.cuda.device_count():计算当前可见可用GPU数
    • torch.cuda.get_device_name():获取GPU名称
    • torch.cuda.manual_seed():为当前GPU设置随机种子
    • torch.cuda.manual_seed_all():为所有可见可用GPU设置随机种子

8.5 多GPU运算的分发并行机制

分发 —》并行运算 —》结果回收

  • torch.nn.DataParallel()

    功能:包装模型,实现分发并行机制

    参数说明:

    • module:需包装分发的模型,即训练的模型
    • device_ids:可分发的GPU,默认分发到所有可见可用GPU
    • output_device:结果输出设备,通常设置为逻辑GPU的第一个 ,即主GPU
8.6 PyTorch常见报错

PyTorch常见报错/坑汇总 (shimo.im)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号