【PyTorch】08训练技巧

8 PyTorch训练技巧

8.1 模型保存与加载

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

【PyTorch】7.1 模型保存与加载

img

  • 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设置随机种子

    image-20220521091928402

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

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

  • torch.nn.DataParallel()
    在这里插入图片描述
    功能:包装模型,实现分发并行机制

    参数说明:

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

8.6 PyTorch常见报错

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值