从Pytorch模型pth⽂件中读取参数成numpy矩阵的操作⽬的:
把训练好的pth模型参数提取出来,然后⽤其他⽅式部署到边缘设备。
Pytorch给了很⽅便的读取参数接⼝:
nn.Module.parameters()
直接看demo:
dels.alexnet import alexnet
model = alexnet(pretrained=True).eval().cuda()
parameters = model.parameters()
for p in parameters:
numpy_para = p.detach().cpu().numpy()
print(type(numpy_para))
print(numpy_para.shape)
上⾯得到的numpy_para就是numpy参数了~
Note:
model.parameters()是以⼀个⽣成器的形式迭代返回每⼀层的参数。所以⽤for循环读取到各层的参数,循环次数就表⽰层数。⽽每⼀层的参数都是parameter.Parameter类型,是Tensor的⼦类,所以直接⽤tensor转numpy(即
p.detach().cpu().numpy())的⽅法就可以直接转成numpy矩阵。
⽅便⼜好⽤,爆赞~
补充:pytorch训练好的.pth模型转换为.pt
将python训练好的.pth⽂件转为.pt
import torch
import torchvision
from unet import UNetnumpy教程pdf电子书
model = UNet(3, 2)#⾃⼰定义的⽹络模型
model.load_state_dict(torch.load("best_weights.pth"))#保存的训练模型
model.eval()#切换到eval()
example = torch.rand(1, 3, 320, 480)#⽣成⼀个随机输⼊维度的输⼊
traced_script_module = ace(model, example)
traced_script_module.save("model.pt")
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。如有错误或未考虑完全的地⽅,望不吝赐教。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。