解决pytorch 保存模型遇到的问题
作者:Zawo1995 发布时间:2021-12-13 08:26:37
标签: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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://www.cnblogs.com/Zawo1995/p/12823392.html
0
投稿
猜你喜欢
- 一、什么是缓存击穿当一个key是热点key时,一般会做缓存来抗大量并发,但当缓存失效的一瞬间,这些大量的并发请求会击穿缓存,直接请求数据库为
- PL/SQL是由Oracle公司对标准SQL进行扩展,专用于Oracle数据库中程序设计的专用语言,属第三代过程式程序设计语言。从Oracl
- 微信小程序获取位置信息的方式有两种,一种是调用微信官方的接口来获取,如getLocation,这种方式只能获取经纬度微信官方文档https:
- 使用场景先来观察以下代码:abstract class base { //do sth}class aClass extends
- 我就废话不多说了,直接上代码吧!#-*- encoding:utf-8 -*-'''python 绘制颜色直方图
- 译注:前两天看到一篇不错的英文文章,叫做 How browsers work,该文概要的介绍了浏览器从头到尾的工作机制,包括HTML等的解析
- SqlServer将数据库中的表复制到另一个数据库一、如果两个数据库在同一台服务器上1、复制表结构和数据(A->B):SELECT *
- 包的引入:import numpy as npimport pandas as pd1. Series 对象的创建1.1 创建一个空的 Se
- 如题,我们直接使用numpy#!D:/workplace/python# -*- coding: utf-8 -*-# @File : nu
- 我就废话不多说了,直接上代码吧:package mainimport ("flag""fmt"&qu
- 1. 反射简介1.1 反射是什么?Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道
- 当然有其它工具可以做这件事,但如果客户不允许你在服务器乱装东西时这个脚本就会有用了。 代码如下:DECLARE @tbImportTable
- 引言:本文是学习Turtle库时,发现两种方法都能改变画笔的方向,但二者又不是完全相同,故对其加以辨析总结到此,在本文你将收获:1.两种改变
- 本文实例讲述了Python切片工具pillow用法。分享给大家供大家参考,具体如下:切片:使用切片将源图像分成许多的功能区域因为要对图片进行
- vendorvendor概念最早是由Keith提出,用来存放依赖包。在版本1.5出现。例如gb项目提供了一个名为gsftp的示例项目,它有一
- 为了方便例子讲解,现有数组和json对象如下var demoArr = ['Javascript', 'Gulp
- 1.前期准备用户models.pyclass User(models.Model): username = mod
- 1. raw,mhd 格式医学图像数据转换raw+mhd格式是常见的一种医学图像格式,每一个病人的数据包含一个mhd文件和一个同名的raw文
- (1)安装Jpype 用Python调用jar包需要安装jpype扩展,在Ubuntu上可以直接使用apt-get安装jpype扩展$ su
- 文章略长,但比较简单。es6中的数组方法some()和every()都接收一个回调函数作为参数,该回调函数又接收三个参数,分别是数组元素、数