【Pytorch 第三讲】如何使用pre-trained weights 来训练自己的模型

理由#

有时在训练自己的模型时,如果从头开始训练自己的模型, 不但费时费力, 有时可能训练了很久, 好不容易收敛, 发现结果不是太好。 如果能够基于被人 已经训练好的权重, 初始化自己的模型。那么在训练自己的模型时会事半功倍。

一. Check Pre-trained Weights

python 复制代码
import torch
from icecream import ic
ckpt=torch.load("/home/ggl/full_skip.pth")
ic(ckpt.keys())

Output:

ic| ckpt.keys(): odict_keys(['patch_embed.conv_down.0.weight', 'patch_embed.conv_down.1.weight', ..........................................

python 复制代码
import torch
from icecream import ic
tar_ckpt=torch.load("/home/ggl/Downloads/224_1k.pth.tar")
ic(tar_ckpt.keys())

Output: ic| tar_ckpt.keys(): dict_keys(['epoch', 'arch', 'state_dict', 'optimizer', 'version', 'args', 'amp_scaler', 'metric'])

根据上面的输出,可以看到, 保存的权重中的键值对是不一样的。

第一个,保存的直接是 'state_dict"

第二个,保存的信息更加全面。 tar_ckpt["state_dict"] ,相当于第一个。

--------------------------------------------------- 补充信息 -------------------------------------------------------

补充信息:

dictOrderedDictodict)都是 Python 中的字典数据结构,但它们在维护元素顺序上有所不同。

1. dict(字典):

示例:

python 复制代码
my_dict = {'a': 1, 'b': 2, 'c': 3} 
for key, value in my_dict.items(): 
    print(key, value) 
  • 在 Python 3.7 之前,字典并不保持元素的插入顺序。即,当你迭代一个字典时,元素的顺序不一定与添加它们的顺序相同。
  • 从 Python 3.7 开始,字典开始维护元素的插入顺序。但是,这是在 CPython 的具体实现上,并不是 Python 语言规范的一部分。

在 Python 3.7 及之后的版本中,以上代码输出的顺序将是 'a', 'b', 'c'

2. OrderedDict(有序字典):

示例:

python 复制代码
from collections import OrderedDict 
my_ordered_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) 
for key, value in my_ordered_dict.items(): 
    print(key, value)

输出的顺序将始终是 'a', 'b', 'c'。

python

  • OrderedDictcollections 模块中的一个类,它从 Python 2.7 开始引入,并在 Python 3 中得到了延续。
  • OrderedDict 会维护元素的插入顺序,因此当你迭代它时,元素的顺序是按照它们被插入的顺序。
  • OrderedDict 的一个重要特性是,当你比较两个 OrderedDict 时,它们的元素顺序也需要相同。

总的来说,如果你需要在迭代时保持元素顺序,可以使用 OrderedDict。如果你使用的是 Python 3.7 及更高版本的话,普通的字典也会保持插入顺序。

二. Check self-model weights Or self-weights

三. Transfer pre-trained Weights to self-weights

Note: 正在完成中....稍后待续

相关推荐
晚霞的不甘7 小时前
CANN × ROS 2:为智能机器人打造实时 AI 推理底座
人工智能·神经网络·架构·机器人·开源
互联网Ai好者7 小时前
MiyoAI数参首发体验——不止于监控,更是你的智能决策参谋
人工智能
island13147 小时前
CANN HIXL 通信库深度解析:单边点对点数据传输、异步模型与异构设备间显存直接访问
人工智能·深度学习·神经网络
喵手7 小时前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
初恋叫萱萱7 小时前
CANN 生态中的图优化引擎:深入 `ge` 项目实现模型自动调优
人工智能
不爱学英文的码字机器7 小时前
深度解读CANN生态核心仓库——catlass,打造高效可扩展的分类器技术底座
人工智能·cann
Kiyra7 小时前
作为后端开发你不得不知的 AI 知识——RAG
人工智能·语言模型
喵手7 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
共享家95277 小时前
Vibe Coding 与 LangChain、LangGraph 的协同进化
人工智能
dvlinker7 小时前
2026远程桌面安全白皮书:ToDesk/TeamViewer/向日葵核心安全性与合规性横向测评
人工智能