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

模型训练——使用预训练权重、冻结训练

文章目录

  • 前言
  • 一、如何使用预训练权重
  • 二、如何冻结训练


前言

一般来讲,从0开始训练效果会很差,因为权值太过随机,特征提取效果不明显,所以训练时不好收敛,尤其是针对数据较少的情况。

一、如何使用预训练权重

  PyTorch提供了 state_dict() 和 load_state_dict() 两个方法用来保存和加载模型参数,前者将模型参数保存为字典形式,后者将字典形式的模型参数载入到模型当中。

使用预训练权重的步骤如下:
(1)加载预训练模型权重、读取当前模型的字典结构

(2)使用预训练模型权重的参数 更新 当前模型的参数

(3)加载更新后的当前模型参数

下面的方式就是在训练模型时的常用两种方式:一个是经验性的通用权重初始化,另一种就是使用上述的预训练权重来进行初始化。 这里值得注意的是 load_state_dict()函数中有一个strict参数,该参数决定网络在恢复过程中是严格恢复(默认是严格恢复),还是非严格恢复,如果严格恢复,则会严格匹配所有的字典,所以当前模型与预训练模型的结构必须完全相同,否则就会报错。所以大多数情况下,都是设置 strict=False ,来使其只有相同的网络层进行初始化。这一步也是迁移学习中常用的backbone初始化。

代码如下(示例)

相关文章:

  • Dante Cloud 是国内首个支持阻塞式和响应式融合的微服务
  • 设计模式之访问者模式
  • Apache安装教程
  • ArcGIS中几个好用的空间分析工具
  • 【ARM64 常见汇编指令学习 19.3 -- ARMv8 三目运算指令 csel 详细介绍】
  • C++STL---stack queue模拟实现
  • 微信小程序实现图片转base64
  • idea中使用maven-helper插件阅读排查【经典版】2
  • Alsa UCM
  • git【工具软件】分布式版本控制工具软件
  • 链表的回文结构OJ
  • CSS实现一个雨滴滑落效果
  • 【第二节】C/C++数据结构之线性表
  • 【linux】自定义快捷命令/脚本
  • 【机器学习】训练GNN图神经网络模型进行节点分类
  • WindowManager相关容器类
  • 【自定义View】Android圆饼进度条
  • 循环嵌套语句的实际应用(2)
  • C#中的实体属性详解与示例
  • 基于Python的北京天气数据可视化分析
  • 市场监管总局发布《城镇房屋租赁合同(示范文本)》
  • 中东睿评|胡塞武装已成为楔入中东各方力量之间的钉子户
  • 宋涛就许历农逝世向其家属致唁电
  • 儿童文学作家周晴病逝,享年57岁
  • 长三角铁路今日预计发送386万人次,沪宁、沪杭等方向尚有余票
  • 上千游客深夜滞留张家界大喊退票?当地通报情况并致歉