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

使用 PyTorch 实现并测试 AlexNet 模型,并使用 TensorRT 进行推理加速

本篇文章详细介绍了如何使用 PyTorch 实现经典卷积神经网络 AlexNet,并利用 Fashion-MNIST 数据集进行训练与测试。在训练完成后,通过 TensorRT 进行推理加速,以提升模型的推理效率。
本文全部代码链接:全部代码下载

环境配置

为了保证代码在 GPU 环境下顺利运行,我们将安装兼容 CUDA 11.3 的 PyTorch 版本。请使用以下命令安装 PyTorch、Torchvision 和 Torchaudio:

!pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu113

为确保兼容性,还可以使用特定版本的 numpy:

!pip install numpy==1.23.0

数据加载与预处理

我们将使用 torchvision.datasets.FashionMNIST 加载 Fashion-MNIST 数据集,并对数据进行标准化处理。

将图像转换为张量
归一化图像到 [-1, 1]

from torchvision import datasets, transforms
from torch.utils.data import DataLoader

定义数据预处理

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,))  # 归一化到 [-1, 1]
])

加载数据集

train_dataset = datasets.FashionMNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.FashionMNIST(root='./data', train=False, download=True, transform=transform)

定义数据加载器

train_loader = DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(dataset=test_dataset, batch_size=64, shuffle=False)

AlexNet 模型定义

AlexNet 是一种包含 5 层卷积层和 3 层全连接层的经典深度卷积神经网络。以下代码展示了如何使用 PyTorch 实现 AlexNet 的结构。

import torch.nn as nn
import torch.nn.functional as F

class AlexNet(nn.Module):
    def __init__(self):
        super(AlexNet, self).__init__()
        self.conv1 = nn.Conv2d(in_channels=1, out_channels=96, kernel_size=11, stride=4, padding=1)
        self.maxpool1 = nn.MaxPool2d(kernel_size=3, stride=2)
        self.conv2 = nn.Conv2d(in_channels=96, out_channels=256, kernel_size=5, stride=1, padding=2)
        self.maxpool2 = nn.MaxPool2d(kernel_size=3, stride=2

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

相关文章:

  • Vue3.js - 一文看懂Vuex
  • C++编程技巧与规范-类和对象
  • 【面试题】发起一次网络请求,当请求>=1s,立马中断
  • CSS多列布局:打破传统布局的束缚
  • 相机光学(四十二)——sony的HDR技术
  • Sigrity SPEED2000 Power Ground Noise Simulation模式如何查看PDS系统的自阻抗操作指导
  • springboot 之 接口数据脱敏
  • 淘淘商城实战高并发分布式项目(有源码)
  • 【死锁处理案例之一】
  • 硬件基础知识补全计划【七】MOS 晶体管
  • 【Docker】 常用命令
  • C++静态成员函数
  • 怎么更换IP地址 改变IP归属地的三种方法
  • 【野生动物识别系统】Python+深度学习+人工智能+卷积神经网络算法+TensorFlow+ResNet+图像识别
  • 关于c语言内存越界及防范措施
  • 如何优化Elasticsearch查询以提高性能?
  • 区块链技术入门:以太坊智能合约详解
  • 【linux】HTTPS 协议原理
  • 软件缺陷等级评定综述
  • asp.net framework从webform开始创建mvc项目
  • 2024江苏省网络建设与运维省赛Linux(十) mariadb 服务
  • 电信网关配置管理系统 upload_channels.php 文件上传致RCE漏洞复现
  • uniapp 集成 uview
  • CPP贪心算法示例
  • Java 面向对象编程(OOP)
  • Word表格自动跨页怎么办