PyTorch翻译官网教程8-SAVE AND LOAD THE MODEL

PyTorch原生8位大模型量化:Lightning Fabric实战指南 大模型量化是降低推理显存占用、提升边缘部署可行性的关键技术,其核心在于在精度损失可控前提下,将FP16权重压缩为低比特整数表示。8-bit量化凭借GPU Tensor Core原生支持、精度-效率黄金平衡点及较低校准成本,成为当前LLM工程落地的主流选择。相比AutoGPTQ、AWQ等依赖CUDA扩展的方案,基于PyTorch原生算子与Lightning Fabric的量化路径,无需编译内核、不破坏Hugging Face生态兼容性,且支持可调试、可审计、可回滚的生产级流水线。本文聚焦8-Bit LLM Q 阅读详情

官网链接

Save and Load the Model — PyTorch Tutorials 2.0.1+cu117 documentation

保存和加载模型

在本节中,我们将了解如何通过保存、加载和运行模型预测来持久化模型状态。

import torch
import torchvision.models as models

保存和加载模型权重

PyTorch模型将学习到的参数存储在一个名为state_dict的内部状态字典中。这些可以通过torch.save 方法持久化

model = models.vgg16(weights='IMAGENET1K_V1')
torch.save(model.state_dict(), 'model_weights.pth')

输出

Downloading: "https://download.pytorch.org/models/vgg16-397923af.pth" to /var/lib/jenkins/.cache/torch/hub/checkpoints/vgg16-397923af.pth

  0%|          | 0.00/528M [00:00<?, ?B/s]
  5%|4         | 23.9M/528M [00:00<00:02, 250MB/s]
 10%|9         | 50.7M/528M [00:00<00:01, 268MB/s]
 16%|#6        | 85.5M/528M [00:00<00:01, 313MB/s]
 22%|##2       | 118M/528M [00:00<00:01, 322MB/s]
 28%|##8       | 148M/528M [00:00<00:01, 304MB/s]
 34%|###3      | 178M/528M [00:00<00:01, 292MB/s]
 39%|###8      | 206M/528M [00:00<00:01, 285MB/s]
 44%|####4     | 233M/528M [00:00<00:01, 267MB/s]
 49%|####8     | 258M/528M [00:00<00:01, 267MB/s]
 54%|#####3    | 284M/528M [00:01<00:00, 269MB/s]
 59%|#####8    | 310M/528M [00:01<00:00, 269MB/s]
 64%|######3   | 336M/528M [00:01<00:00, 270MB/s]
 69%|######8   | 362M/528M [00:01<00:00, 269MB/s]
 74%|#######3  | 388M/528M [00:01<00:00, 270MB/s]
 78%|#######8  | 414M/528M [00:01<00:00, 270MB/s]
 83%|########3 | 440M/528M [00:01<00:00, 270MB/s]
 88%|########8 | 465M/528M [00:01<00:00, 270MB/s]
 93%|#########3| 491M/528M [00:01<00:00, 270MB/s]
 98%|#########8| 517M/528M [00:01<00:00, 271MB/s]
100%|##########| 528M/528M [00:02<00:00, 276MB/s]

要加载模型权重,需要首先创建同一模型的实例,然后使用load_state_dict() 方法加载参数。

model = models.vgg16() # we do not specify ``weights``, i.e. create untrained model
model.load_state_dict(torch.load('model_weights.pth'))
model.eval()

输出

VGG(
  (features): Sequential(
    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU(inplace=True)
    (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU(inplace=True)
    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (6): ReLU(inplace=True)
    (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (8): ReLU(inplace=True)
    (9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (11): ReLU(inplace=True)
    (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (13): ReLU(inplace=True)
    (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (15): ReLU(inplace=True)
    (16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (18): ReLU(inplace=True)
    (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (20): ReLU(inplace=True)
    (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (22): ReLU(inplace=True)
    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (25): ReLU(inplace=True)
    (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (27): ReLU(inplace=True)
    (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (29): ReLU(inplace=True)
    (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  (avgpool): AdaptiveAvgPool2d(output_size=(7, 7))
  (classifier): Sequential(
    (0): Linear(in_features=25088, out_features=4096, bias=True)
    (1): ReLU(inplace=True)
    (2): Dropout(p=0.5, inplace=False)
    (3): Linear(in_features=4096, out_features=4096, bias=True)
    (4): ReLU(inplace=True)
    (5): Dropout(p=0.5, inplace=False)
    (6): Linear(in_features=4096, out_features=1000, bias=True)
  )
)

注意

一定要在推理之前调用model.eval() 方法,将dropout层 和normalization 层设置成evaluation模式。如果不这样做,将产生不一致的推理结果。

保存和加载模型与形状

当加载模型权重时,我们需要首先实例化模型类,因为类定义了网络的结构。我们可能希望将该类的结构与模型一起保存,在这种情况下,我们可以使用model(而不是model.state_dict())方法保存:

torch.save(model, 'model.pth')

然后我们可以像这样加载模型:

model = torch.load('model.pth')

注意

这种方法在序列化模型时使用Python pickle模块,因此它依赖于 加载模型时可用的实际类定义。

相关教程

Saving and Loading a General Checkpoint in PyTorch


 


 

基于AI大模型的视频实时翻译字幕生成:从原理到实践 语音识别(ASR)与机器翻译(NMT)是人工智能在自然语言处理领域的核心应用。其原理在于通过深度神经网络模型,将音频信号转化为文本,再在不同语言间进行语义转换。这项技术的价值在于极大地提升了跨语言信息处理的效率,打破了语言障碍,使全球化的知识获取与内容消费成为可能。其应用场景广泛,涵盖了在线教育、国际会议、多媒体内容本地化以及实时直播等多个领域。本文聚焦于如何利用当前先进的**开源模型**(如Whisper)与工具链,构建一套自动化视频**实时翻译字幕**生成系统,将上述技术原理转化为具体的工程实践,为开发 阅读详情

相关推荐

PyTorch实现MAML元学习:小样本快速适应实战

元学习(Meta-Learning)是一种让模型学会‘如何学习’的范式,核心解决小样本场景下的快速任务适应问题。其原理在于通过双层优化机制,在大量相似子任务上训练出具备强泛化初始化参数的模型,使新任务仅需极少样本(如1-shot)和几步梯度更新即可高效收敛。技术价值体现在显著降低标注依赖、缩短模型迭代周期,并提升冷启动能力。典型应用场景包括工业缺陷检测、医疗影像分析、边缘设备个性化适配等数据稀缺领域。本文聚焦optimization-based元学习标杆方法MAML,基于PyTorch在MNIST上完成端到

weixin_33895516的博客 410

pytorch官网预训练模型百度云下载 VGG16,Densnet169,inception_v3

在深度学习领域采用预训练的模型参数进行迁移学习往往会得到事半功倍的效果。但是在使用pytorch加载预训练模型是往往会在下载模型时报错。VGG16报错:https://download.pytorch.org/models/vgg16-397923af.pth 模型保存路径:/home/主机名/.cache/torch/checkpoints/vgg16-397923af.pth, inception_v3报错:https://download.pytorch.org/models/inception_

工科π的博客 9606

MATLAB集成PyTorch模型:交互式任务实现跨语言AI工作流

在科学计算与AI工程领域,跨语言互操作是提升开发效率的关键技术。其核心原理是通过内存高效的数据转换引擎,实现不同编程环境间的无缝数据交换。以MATLAB与Python的互操作为例,底层通过专用引擎将MATLAB数组转换为NumPy数组,进而与PyTorch Tensor进行零成本转换,这为复杂AI模型的集成提供了技术基础。该技术的工程价值在于打破了工具链壁垒,允许研究人员在保持MATLAB交互式探索体验的同时,直接调用PyTorch生态中丰富的预训练模型。在实际应用场景中,这特别适用于算法原型验证、数据分析

weixin_33696822的博客 358

Pytorch:离线下载预训练模型方法,如VGGNet,ResNet,DenseNet等

以Resnet18为例,在程序中输入 from __future__ import print_function, division from torchvision import models model_ft = models.resnet18(pretrained=True) 然后运行,就会出现如下 再将这个网址复制到浏览器中,就可以直接下载Resnet18模型。下载结束后,将下载的文件放入你建立的python项目中,再运用如下代码就可以调用Resnet18模型。 model_f

龙雪的博客 3518

离线英语词典:轻量Seq2Seq模型实现母语翻译

离线词典是一种在无网络、无GPU、低配置设备上运行的本地化语言工具,其核心技术依赖轻量模型与端到端训练架构。相比大模型方案,它通过LSTM+Attention等可解释性强、资源占用低的模型结构,在4GB内存设备上实现毫秒级响应,兼顾精度与可部署性。技术价值在于突破云服务依赖,支持小语种母语适配与零API调用,适用于教育现场、考试环境及边缘终端。典型应用场景包括乡村教学机、老旧办公电脑、断网考场及海关离线终端。本文聚焦于英语→小语种的离线词典构建,涵盖数据清洗、模型压缩、发音合成与单文件打包等完整工程链路。

365

无参考后训练:无需平行语料,用对比学习提升大语言模型翻译质量

在自然语言处理领域,大语言模型(LLM)的微调是提升其特定任务性能的关键技术。传统方法通常依赖于大量高质量的平行语料进行监督微调,但这在专业领域或小语种中面临数据稀缺、成本高昂的瓶颈。对比学习作为一种自监督学习范式,通过让模型在正负样本对中学习区分高质量与低质量输出,能够有效引导模型内化任务标准。这种技术价值在于,它能够利用更易获取的单语语料,突破数据依赖限制,实现模型能力的专项优化。在机器翻译场景中,通过构造目标语言的高质量与加噪文本对,模型可以学习到优秀译文在流畅性、信息完整性和术语准确性等方面的特征,

weixin_34038293的博客 380

第P6周:VGG-16算法实现人脸识别

🍻拔高(可选):3. 测试集准确率达到60%(难度有点大,但是这个过程可以学到不少)4. 手动搭建VGG-16网络框架。

a536723241的博客 358

PyTorch、TensorFlow、Keras实战踩坑对比:数据加载到部署的四大生死环节

深度学习框架选择本质是工程权衡问题——从计算图机制(动态图vs静态图)出发,理解其对数据加载效率、模型构建灵活性、训练调试可观察性及部署兼容性的底层影响。TensorFlow依赖声明式tf.data流水线但易受CPU-GPU协同瓶颈制约;Keras以高抽象简化开发却在多进程内存管理与版本兼容上埋下隐性风险;PyTorch凭借纯Python nn.Module和透明DataLoader提供极致控制力,但也要求开发者亲手拧紧每颗性能螺丝。本文基于工业质检、医疗影像、边缘推理等真实场景,结合NVIDIA A100

weixin_34138056的博客 445

解决pytorch预训练模型下载速度慢的问题

在远程跑代码的时候,我需要 from torchvision.models.resnet import resnet50 然而远程服务器上下载太慢太慢了,有时还会下载进度突然不动了,这……心累啊…… 解决方法: 1. 去以下网址下载你需要的模型: 1 Resnet: 2 3 model_urls = { 4 'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth', 5 'resn

zhyue77yuyi的博客 9256

PyTorch+OpenCV实战:手撕FGSM对抗样本生成与鲁棒性测试

对抗样本是深度学习模型在输入空间中微小扰动即导致错误预测的现象,其本质源于神经网络高维非线性决策边界的脆弱性。基于梯度的快速攻击方法(如FGSM)通过计算损失函数对输入的梯度方向施加有界扰动,以低成本暴露模型鲁棒性缺陷。该技术具有明确的数学原理、可复现的工程链路和强解释价值,广泛应用于AI安全评估、模型加固验证及可解释性研究。在Python生态中,PyTorch提供动态图与细粒度梯度控制能力,OpenCV保障图像域精准映射与物理世界适配,二者协同构成工业级对抗实验的黄金组合。本文聚焦FGSM这一基石算法,覆

weixin_34353714的博客 406

从零实现大语言模型:Happy-LLM开源教程带你手写LLaMA2

最近在社区里看到很多开发者,尤其是刚接触AI大模型的朋友,普遍反映一个痛点:大模型相关的资料要么是晦涩难懂的学术论文,要么是零散的博客片段,缺乏一个从零开始、手把手带你“造轮子”的系统性教程。想深入理解Transformer、预训练、微调这些核心概念,却不知从何下手;想动手实现一个自己的小模型,又被复杂的代码和配置劝退。 如果你也有类似的困惑,那么今天介绍的这份开源教程《Happy-LLM》或许就是你一直在寻找的答案。它在GitHub上已经收获了超过31.7K的星标,被众多开发者誉为“最适合新手入门的大模型

weixin_33739541的博客 530

现有网络模型的使用及修改

现有网络模型的使用及修改

weixin_73557167的博客 568

PyTorch超参数优化实战:用Optuna实现智能调参与模型搜索

超参数优化是深度学习模型落地的关键瓶颈,其本质是在高维非凸损失曲面上高效搜索最优配置。传统网格/随机搜索缺乏反馈机制,而贝叶斯优化通过构建代理模型与自适应采样,显著提升搜索效率。Optuna作为专为可复现性与工程化设计的智能调参框架,原生支持PyTorch状态序列化、细粒度剪枝(Pruning)和RDB存储,能无缝集成训练循环并支撑多卡集群调度。本文聚焦PyTorch生态下的超参数调优与轻量级神经架构搜索(NAS),涵盖从Trial设计、CUDA内存安全、MySQL持久化到Slurm分布式执行的全链路实践,

weixin_34150830的博客 466

实战指南:如何用AI漫画翻译工具解决多语言图片翻译难题

在当今全球化的数字时代,我们经常遇到包含外语文字的图片内容,特别是日文漫画、多语言截图和外语海报等场景。传统的手动翻译流程繁琐低效,而现有的OCR工具往往无法处理复杂的排版和图像背景。本文将介绍一款基于深度学习的开源AI漫画翻译工具,它能够自动识别图片中的文字、智能翻译并重新排版,实现一键式图片翻译解决方案。 ## 场景痛点与技术挑战 多语言图片翻译面临的核心挑战在于文本检测、OCR识别和自然

gitblog_00895的博客 472

pytorch预训练模型vgg16-397923af.pth

pytorch预训练模型vgg16-397923af.pth

《遥感大模型生产级实战:从数据到决策的端到端AI工程》系列第三部分:城市洪涝灾害应急响应与评估平台实战-文章 14:项目二启动与多源异构数据对齐

我们将系统性地梳理城市洪涝场景下的所有关键数据源,从天上的卫星(光学与SAR)、空中的无人机,到地面的物联网传感器和社交媒体信息流,深入剖析每种数据在洪涝响应中的独特价值、获取方式与内在局限性。本章的核心将是一个详尽的、生产级的数据对齐技术全景,我们将分步解决三大核心对齐难题:空间对齐(将所有数据投影到统一的地理坐标系)、时间对齐(处理不同采样频率的时间序列)以及最困难的语义对齐(将文本描述与物理观测相关联)。

panshengwu的博客 2003

基于Whisper与Transformers构建本地化视频翻译字幕生成方案

自动语音识别与机器翻译是人工智能在多媒体处理领域的核心技术。ASR技术通过声学模型和语言模型将音频信号转换为文本,而NMT则利用深度神经网络实现跨语言语义转换。这两项技术的结合,为视频内容本地化提供了自动化解决方案,能显著提升教育、会议、娱乐等多语言场景下的信息获取效率。本文聚焦于视频实时翻译与字幕生成,通过整合Whisper离线语音识别和Hugging Face翻译模型,构建了一套完整的本地处理流程,涵盖音视频分离、文本识别、跨语言转换及SRT字幕封装等关键环节,并提供了具体的Python实现代码和部署优

weixin_34380948的博客 346

【论文精读】Latent Diffusion

Latent Diffusion

weixin_44934783的博客 4479

PyTorch实战:从原理到应用,掌握RNN与LSTM序列建模

在深度学习领域,处理序列数据(如文本、时间序列)是核心挑战。传统神经网络难以捕捉时序依赖,而循环神经网络(RNN)及其改进型长短期记忆网络(LSTM)通过引入隐状态和门控机制,有效解决了长距离依赖和梯度问题,成为序列建模的基石技术。其技术价值在于能够对具有前后关联的数据进行建模,广泛应用于自然语言处理、语音识别、时间序列预测等场景。本文聚焦于PyTorch框架下的实战应用,通过一个完整的文本分类项目,详细讲解RNN和LSTM的核心机制、API用法、数据准备、模型构建、训练验证及常见陷阱排查,为开发者提供从理

weixin_30216561的博客 296

js逆向第3例:蝉妈妈大屏实时数据formDataSign加密

蝉妈妈大屏抖音直播实时数据是抓取抖音直播间数据的实时数据,有类似需求的公司但没有能力去搞定抖音,抓取蝉妈妈数据也是一个不错的选择。接下来就是调试找到加密点,说句题外话蝉妈妈的所有js文件打包方式用的都是webpack5,那如何区分打包方式可以阅读这篇文章。时间戳 ,经过观察发现加密参数是实时变化的。这个函数扣下来,在浏览器控制台中测试一下。言归正传,打断点找到变量。继续打断点向上找又发现了。查看请求参数,可以看到。请求的内容,那么这个。

花臂不花Home 1542

Python遥感图像处理应用篇(二十三):Python+GDAL 批量拼接图像

遥感影像拼接分多种不同的情况,比如比较常用的是两幅影像拼接或者多个图像合并为一个图像。GDAL中实现影像拼接的方式也有多种,比如常用可以通过numpy读取影像数组,并计算各个图像的numpy数组范围,合并多个numpy数组为一个最终的结果,并将其重新输出为一幅新的图像,即可实现图像的拼接。另外比较方便的一种方法便是使用GDAL.warp()函数方法。这个函数的功能很多,可以实现多种不同的目的,比如用于坐标系转换、投影变换、图像合并与镶嵌、地理范围裁剪、更改分辨率、矢量裁剪等多种功能。这些功能可以通过设置Op

soderayer的博客 4644

PRISM分布门控流匹配:无配对图像翻译的稳定生成模型实践

生成对抗网络(GAN)在图像生成领域取得了显著成果,但其训练不稳定和模式崩溃问题一直是工程实践中的挑战。近年来,基于流匹配和常微分方程(ODE)的生成模型因其训练稳定性优势受到关注,它们通过构建从简单分布到复杂数据分布的连续概率流路径来生成数据。这类模型在训练时通常使用均方误差等凸损失函数,避免了GAN的对抗性博弈,从而在图像生成质量与训练鲁棒性之间取得了更好平衡。在无配对图像翻译任务中,PRISM模型创新性地引入了分布门控机制,将内容编码与风格编码作为条件信息来引导概率流的走向,实现了更可控的图像风格迁移

weixin_34081595的博客 417

手把手教你学simulink(57.3)--电励磁同步电动机场景示例:基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机

目录基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机项目实例1. 项目背景2. 系统架构2.1 电励磁同步电动机模型2.2 三相逆变器模型2.3 自适应控制器(Adaptive Controller)2.4 系统框图3. 模型设计3.1 创建Simulink模型3.2 自适应控制(Adaptive Control)设计3.3 仿真环境搭建4. 参数优化4.1 自动调优5. 实际应用案例5.1 工业驱动系统5.2 风力发电系统6. 结论需求分析电励磁同步电动机(Electr

MHD0815的博客 505
上一篇: PyTorch翻译官网教程7-OPTIMIZING MODEL PARAMETERS
下一篇: PyTorch翻译官网教程-DEPLOYING PYTORCH IN PYTHON VIA A REST API WITH FLASK
poorCoder_
博客等级 码龄10年 129粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值