因为最近将许多的神经网络模型支持到自己的算法平台中,出现了模型的推理的问题,这里记录和总结一下方便自己以后查看。
pickle的使用以及和troch.dump()的异同点
学习前言
由于自己搭建的算法平台所有算法都是使用pickle来保存所有算法的对象和结构,所以在支持各种神经网络模型时,也将所有神经网络参数改为用pickle保存。
一、相同点
torch.save()
和pickle.dump()
都是常用的保存Python对象的方法,它们都可以用来保存神经网络结构的参数。
二、异同点
1、torch.save()
函数是PyTorch官方提供的函数,被广泛使用和推荐;它被设计用于保存PyTorch模型和参数,并支持在之后快速加载,但是它不兼容其他的Python序列化库;
2、pickle.dump()
函数是Python标准库提供的函数,支持保存和加载任何Python对象,包括神经网络结构的参数;与其他Python序列化库兼容;加载速度偏慢一点;使用较底层的二进制格式来保存数据,不便于读取或显示;
三、pickle对
.pt、.onnx、.trt、.pth、.pth.tar、.pkl模型的支持情况
因为自己的算法平台要支持所有的推理部署方式所以测试了大量不同模型的支持情况
测试结果:pickle支持对.pt、pth、pkl模型数据的加载和保存,但是对onnx和trt模型的保存失败,目前onnx模型和trt模型只能和我的整个算法的参数和结构分开保存,在整个算法数据导入后在单独导入模型