当前位置: 首页 > 编程笔记 >

解决pytorch 保存模型遇到的问题

西门淮晨
2023-03-14
本文向大家介绍解决pytorch 保存模型遇到的问题,包括了解决pytorch 保存模型遇到的问题的使用技巧和注意事项,需要的朋友参考一下

今天用pytorch保存模型时遇到bug

Can't pickle <class 'torch._C._VariableFunctions'>

在google上查找原因,发现是保存时保存了整个模型的原因,而模型中有一些自定义的参数

将 torch.save(model,save_path) 改为 torch.save(model.state_dict(),save_path)

然后载入模型也做相应的更改就好了

补充:pytorch训练模型的一些坑

1. 图像读取

opencv的python和c++读取的图像结果不一致,是因为python和c++采用的opencv版本不一样,从而使用的解码库不同,导致读取的结果不同。

2. 图像变换

PIL和pytorch的图像resize操作,与opencv的resize结果不一样,这样会导致训练采用PIL,预测时采用opencv,结果差别很大,尤其是在检测和分割任务中比较明显。

3. 数值计算

pytorch的torch.exp与c++的exp计算,10e-6的数值时候会有10e-3的误差,对于高精度计算需要特别注意,比如

两个输入5.601597, 5.601601, 经过exp计算后变成270.85862343143174, 270.85970686809225

以上为个人经验,希望能给大家一个参考,也希望大家多多支持小牛知识库。如有错误或未考虑完全的地方,望不吝赐教。

 类似资料:
  • 本文向大家介绍解决Pytorch 加载训练好的模型 遇到的error问题,包括了解决Pytorch 加载训练好的模型 遇到的error问题的使用技巧和注意事项,需要的朋友参考一下 这是一个非常愚蠢的错误 debug的时候要好好看error信息 提醒自己切记好好对待error!切记!切记! -----------------------分割线---------------- pytorch 已经非常

  • 本文向大家介绍解决pytorch 模型复制的一些问题,包括了解决pytorch 模型复制的一些问题的使用技巧和注意事项,需要的朋友参考一下 直接使用 会出现当更新model2时,model1的权重也会更新,这和自己的初始目的不同。 经评论指出可以使用: 来实现深拷贝,手上没有pytorch环境,具体还没测试过,谁测试过可以和我说下有没有用。 原方法: 所有要使用模型复制可以使用如下方法。 这样编写

  • 本文向大家介绍解决pytorch 数据类型报错的问题,包括了解决pytorch 数据类型报错的问题的使用技巧和注意事项,需要的朋友参考一下 pytorch报错: RuntimeError: Expected object of type Variable[torch.LongTensor] but found type Variable[torch.cuda.ByteTensor] for arg

  • 本文向大家介绍解决pytorch 的state_dict()拷贝问题,包括了解决pytorch 的state_dict()拷贝问题的使用技巧和注意事项,需要的朋友参考一下 先说结论 model.state_dict()是浅拷贝,返回的参数仍然会随着网络的训练而变化。 应该使用deepcopy(model.state_dict()),或将参数及时序列化到硬盘。 再讲故事,前几天在做一个模型的交叉验证

  • 本文向大家介绍解决Pycharm 中遇到Unresolved reference 'sklearn'的问题,包括了解决Pycharm 中遇到Unresolved reference 'sklearn'的问题的使用技巧和注意事项,需要的朋友参考一下 解决方法: 在编程过程中,遇到很多错误,提示都是unresolved reference,在进行先关搜素后,从stackoverflow上的相关问题得到

  • 本文向大家介绍解决pytorch DataLoader num_workers出现的问题,包括了解决pytorch DataLoader num_workers出现的问题的使用技巧和注意事项,需要的朋友参考一下 最近在学pytorch,在使用数据分批训练时在导入数据是使用了 DataLoader 在参数 num_workers的设置上使程序出现运行没有任何响应的结果 ,看看代码 (以上代码取莫烦p