pt模型剪裁

本文介绍了如何加载.pt模型文件,查询并删除无意义的键值对,如训练过程中的统计数据和优化器参数,以减小模型体积。通过删除不必要的键值对,例如'optimizer'、'training_results'等,可以有效地优化模型存储。最后展示了如何保存精简后的模型权重文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.pt文件是模型权重,主要包含训练过程中保留的键值对信息
以自己训练的yolov5s目标检测权重test.pt为例:

1.模型文件加载

pt = r'weights/test.pt'
state = torch.load(pt)

2.模型键值对查询

for k in state.keys():
print(k)

epoch: 113(对后续推理无意义可删除)
best_fitness: [0.85533715] (对后续推理无意义可删除)
training_results: 0/599 2.47G 0.05426… (对后续推理无意义可删除)
model: 模型权重
ema:模型权重 (重复可删除)
updates: 23620 (对后续推理无意义可删除)
optimizer:优化器的一些参数 (只用作推理可删除)
wandb_id:可视化序列值 (可删除)

3.删除无效键值对(del)

del state['optimizer']['state']             
del state['training_results']               
del state['ema']							  
del state['updates']		

4.查询键值类型(type)

print(type(state['model']))     				<class 'models.yolo.Model'>
print(type(state['updates']))					<class 'int'>
print(type(['wandb_id']))						<class 'list'>
print(type(state['optimizer']))				<class 'dict'>

5.模型文件保存

state:加载的模型权重
filename:存储的文件名

torch.save(state, filename)

去掉无用的信息后,pt模型体积会减小很多:
在这里插入图片描述

6.实例代码

以yolov5模型为例:

import torch

pt = r'weights/best.pt'
# 加载
state = torch.load(pt)

# 键值对
for k in state.keys():
    print(k)
del state['epoch']
del state['best_fitness']
del state['training_results']
del state['ema']
del state['updates']
del state['optimizer']
del state['wandb_id']

# 保存
torch.save(state, 'weights/best_cut.pt')

for k in state.keys():
    print(k)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值