当前位置: 首页 > article >正文

使用 pytorch 运行预训练模型的框架

PyTorch 简介:

PyTorch 是一个 Python 程序库,我们可以使用 PyTorch 来构建深度学习项目。

PyTorch 的两个特点:

  1. PyTorch 的核心数据结构是张量,张量是一个多维数组,与 NumPy 数组有许多相似之处。
  2. PyTorch 提供了在专用硬件上执行加速数学操作的特性,这使得神经网络结构设计以及在单机或并行计算资源上训练它们变得很方便。

因此,我们可以将 PyTorch 描述为一个在 Python 中为科学计算提供优化支持的高性能库。

PyTorch 大部分是用 C++ 和 CUDA 编写的,CUDA 是一种来自英伟达的类 C++的语言,可以被编译并在 GPU 上以并行方式运行。


使用 pytorch 运行预训练模型的框架

import torch
  1. 定义模型类 1.1 自定义模型类 1.2 从 torchvision 模块加载模型: from torchvision import models

  1. 实例化模型类
resnet101 = models.resnet101() 

  1. 给实例化的模型类加载预训练好的参数 3.1 实例化模型类和加载预训练好的权重同时进行(这种情况可以省略第 2 步)
resnet101 = models.resnet101(pretrained=True)  # pretrained=True 指示函数下载 resnet101 在 ImageNet数据集上训练好的权重

3.2 使用模型的 load_state_dict() 方法将预训练权重加载到 resnet101 中

model_path = '......'
model_data = torch.load(model_path)
resnet101.load_state_dict(model_data)

3.3 使用 torch.hub 从 github 加载模型(这种情况可以省略第 1、2 步)

from torch import hub
resnet101 = hub.load('pytorch/vision:main''resnet101', pretrained=True)  # 第一项是 GitHub 存储库的名称和分支,第二项是入口点函数的名称

以上代码将 pytorch/vision 主分支的快照及其权重默认下载到本地的 C:\Users\username.cache\torch\hub 目录下,然后运行 resnet101 入口点函数返回实例化的模型,参数 pretrained=true 会从 ImageNet 获得预训练权重,并加载到 resnet101 中。


  1. 使用 Python 图像操作模块 Pillow 从本地文件系统加载一幅图像
from PIL import Image  # PIL 指的是 pillow
img = Image.open(".../xxx.jpg")

  1. 使用 TorchVision 模块提供的 transforms 定义一个对输入图像进行预处理的管道
from torchvision import transforms
preprocess = transforms.Compose([transforms.Resize(256),  # 将输入图像缩放到 256× 256 个像素
                                 transforms.ToTensor(),  # 转换为一个张量
                                ])

  1. 使用预处理管道 preprocess 对图像 img 进行预处理
img_t = preprocess(img)

  1. 给数据添加一个新的维度:批次维度
batch_t = torch.unsqueeze(img_t, 0)

  1. 进行推理时,我们需要将神经网络置于 eval 模式
resnet.eval()

  1. eval 模式设置好之后,进行推理
out = resnet101(batch_t)
out

......

本文由 mdnice 多平台发布


http://www.kler.cn/a/379800.html

相关文章:

  • 【Redis】一种常见的Redis分布式锁原理简述
  • PostgreSQL (八) 创建分区
  • mac-泛洪
  • 针对解决前后端BUG的个人笔记
  • Java 实现接口幂等的九种方法:确保系统稳定性与数据一致性
  • PHP合成图片,生成海报图,poster-editor使用说明
  • D58【python 接口自动化学习】- python基础之异常
  • 不需要复制粘贴,重复内容如何使用Mac快速完成输入
  • 初始JavaEE篇——多线程(5):生产者-消费者模型、阻塞队列
  • 【Mac】Screen Recorder by Omi Mac:Omi录屏专家
  • 从最小作用量原理推导牛顿三大定律
  • 相机硬触发
  • 小红书笔记详情API接口系列(概述到示例案例)
  • Mac上的免费压缩软件-FastZip使用体验实测
  • Vue3的router和Vuex的学习笔记整理
  • WPF使用Prism框架首页界面
  • 语言模型的采样方法
  • 企业培训考试系统源码
  • 深入理解Spring、SpringMVC、SpringBoot和Spring Cloud的区别与用法
  • 服务器数据恢复—RAID5阵列硬盘坏道掉线导致存储不可用的数据恢复案例
  • 【前端开发入门】JavaScript快速入门--数据操作
  • [vulnhub] DC:9
  • antdesignvue + AWS-S3实现Minio大文件分片上传
  • qt QPainter详解
  • React面试基础题大全(all)
  • C++ | Leetcode C++题解之第539题最小时间差