pytorch 使用加载训练好的模型做inference
前提: 模型参数和结构是分别保存的
1、 构建模型(# load model graph)
model = MODEL()
2、加载模型参数(# load model state_dict)
model.load_state_dict ( { k.replace('module.',''):v for k,v in torch.load(config.model_path, map_location=config.device).items() } ) model = self.model.to(config.device) * config.device 指定使用哪块GPU或者CPU *k.replace('module.',''):v 防止torch.DataParallel训练的模型出现加载错误
(解决RuntimeError: module must have its parameters and buffers on device cuda:0 (device_ids[0]) but found one of them on device: cuda:1问题)
3、设置当前阶段为inference(# predict)
model.eval()
以上这篇pytorch 使用加载训练好的模型做inference就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
pytorch模型存储的2种实现方法
1.保存整个网络结构信息和模型参数信息: torch.save(model_object, './model.pth') 直接加载即可使用: model = torch.load('./model.pth') 2.只保存网络的模型参数-推荐使用 torch.save(model_object.state_dict(), './params.pth') 加载则要先从本地网络模块导入网络,然后再加载参数: from models import AgeModel model = AgeModel()
-
pytorch:model.train和model.eval用法及区别详解
使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval,eval()时,框架会自动把BN和DropOut固定住,不会取平均,而是用训练好的值,不然的话,一旦test的batch_size过小,很容易就会被BN层导致生成图片颜色失真极大!!!!!! Class Inpaint_Network() ...... Model = Inpaint_Nerwoek() #train: Model.train(mode=True) ..... #test: Model.ev
-
pytorch构建网络模型的4种方法
利用pytorch来构建网络模型有很多种方法,以下简单列出其中的四种. 假设构建一个网络模型如下: 卷积层-->Relu层-->池化层-->全连接层-->Relu层-->全连接层 首先导入几种方法用到的包: import torch import torch.nn.functional as F from collections import OrderedDict 第一种方法 # Method 1 --------------------------------------
-
详解PyTorch批训练及优化器比较
一.PyTorch批训练 1. 概述 PyTorch提供了一种将数据包装起来进行批训练的工具--DataLoader.使用的时候,只需要将我们的数据首先转换为torch的tensor形式,再转换成torch可以识别的Dataset格式,然后将Dataset放入DataLoader中就可以啦. import torch import torch.utils.data as Data torch.manual_seed(1) # 设定随机数种子 BATCH_SIZE = 5 x = torch.li
-
pytorch 使用加载训练好的模型做inference
前提: 模型参数和结构是分别保存的 1. 构建模型(# load model graph) model = MODEL() 2.加载模型参数(# load model state_dict) model.load_state_dict ( { k.replace('module.',''):v for k,v in torch.load(config.model_path, map_location=config.device).items() } ) model = self.model.to
-
解决Pytorch 加载训练好的模型 遇到的error问题
这是一个非常愚蠢的错误 debug的时候要好好看error信息 提醒自己切记好好对待error!切记!切记! -----------------------分割线---------------- pytorch 已经非常友好了 保存模型和加载模型都只需要一条简单的命令 #保存整个网络和参数 torch.save(your_net, 'save_name.pkl') #加载保存的模型 net = torch.load('save_name.pkl') 因为我比较懒我就想直接把整个网络都保存下来,然
-
pytorch 加载(.pth)格式的模型实例
有一些非常流行的网络如 resnet.squeezenet.densenet等在pytorch里面都有,包括网络结构和训练好的模型. pytorch自带模型网址:https://pytorch-cn.readthedocs.io/zh/latest/torchvision/torchvision-models/ 按官网加载预训练好的模型: import torchvision.models as models # pretrained=True就可以使用预训练的模型 resnet18 = mod
-
Pytorch自己加载单通道图片用作数据集训练的实例
pytorch 在torchvision包里面有很多的的打包好的数据集,例如minist,Imagenet-12,CIFAR10 和CIFAR100.在torchvision的dataset包里面,用的时候直接调用就行了.具体的调用格式可以去看文档(目前好像只有英文的).网上也有很多源代码. 不过,当我们想利用自己制作的数据集来训练网络模型时,就要有自己的方法了.pytorch在torchvision.dataset包里面封装过一个函数ImageFolder().这个函数功能很强大,只要你直接将
-
Pytorch 数据加载与数据预处理方式
数据加载分为加载torchvision.datasets中的数据集以及加载自己使用的数据集两种情况. torchvision.datasets中的数据集 torchvision.datasets中自带MNIST,Imagenet-12,CIFAR等数据集,所有的数据集都是torch.utils.data.Dataset的子类,都包含 _ _ len _ (获取数据集长度)和 _ getItem _ _ (获取数据集中每一项)两个子方法. Dataset源码如上,可以看到其中包含了两个没有实现的子
-
pytorch实现加载保存查看checkpoint文件
目录 1.保存加载checkpoint文件 2.跨gpu和cpu 3.查看checkpoint文件内容 4.常见问题 pytorch保存和加载文件的方法,从断点处继续训练 1.保存加载checkpoint文件 # 方式一:保存加载整个state_dict(推荐) # 保存 torch.save(model.state_dict(), PATH) # 加载 model.load_state_dict(torch.load(PATH)) # 测试时不启用 BatchNormalization 和 D
-
利用keras加载训练好的.H5文件,并实现预测图片
我就废话不多说了,直接上代码吧! import matplotlib matplotlib.use('Agg') import os from keras.models import load_model import numpy as np from PIL import Image import cv2 #加载模型h5文件 model = load_model("C:\\python\\python3_projects\\cat_dog\\cats_dogs_fifty_thousand.h
-
pytorch 数据加载性能对比分析
传统方式需要10s,dat方式需要0.6s import os import time import torch import random from common.coco_dataset import COCODataset def gen_data(batch_size,data_path,target_path): os.makedirs(target_path,exist_ok=True) dataloader = torch.utils.data.DataLoader(COCODat
-
Pytorch如何加载自己的数据集(使用DataLoader读取Dataset)
目录 1.Pytorch加载数据集会用到官方整理好的数据集 2.Dataset 3.DataLoader 4.查看数据 5.总结 1.Pytorch加载数据集会用到官方整理好的数据集 很多时候我们需要加载自己的数据集,这时候我们需要使用Dataset和DataLoader Dataset:是被封装进DataLoader里,实现该方法封装自己的数据和标签. DataLoader:被封装入DataLoaderIter里,实现该方法达到数据的划分. 2.Dataset 阅读源码后,我们可以指导,继承该
-
pytorch锁死在dataloader(训练时卡死)
1.问题描述 2.解决方案 (1)Dataloader里面不用cv2.imread进行读取图片,用cv2.imread还会带来一系列的不方便,比如不能结合torchvision进行数据增强,所以最好用PIL 里面的Image.open来读图片.(并不适用本例) (2)将DataLoader 里面的参变量num_workers设置为0,但会导致数据的读取很慢,拖慢整个模型的训练.(并不适用本例) (3)如果用了cv2.imread,不想改代码的,那就加两条语句,来关闭Opencv的多线程:cv2.
随机推荐
- Springboot使用POI实现导出Excel文件示例
- asp.net下OnClientClick的妙用!
- CloudStack 创建主存储失败解决方案
- javascript实现仿百度图片的瀑布流加载效果
- JavaScript Promise 用法
- asp.net的cms 核心代码篇
- MySQL时间字段究竟使用INT还是DateTime的说明
- 一步一步学习PHP(8) php 数组
- Python实现在Linux系统下更改当前进程运行用户
- python魔法方法-属性访问控制详解
- PHP中list()函数用法实例简析
- php 短链接算法收集与分析
- Java Socket编程实例(四)- NIO TCP实践
- android Setting中隐藏项实现原理与代码
- PHP设计模式之装饰者模式
- destoon首页调用求购供应信息的地区名称的方法
- 36个Android开发常用经典代码大全
- React中this丢失的四种解决方法
- java中申请不定长度数组ArrayList的方法
- node.js express框架简介与实现