译者:talengu

PyTorch的主要接口为Python。虽然Python有动态编程和易于迭代的优势,但在很多情况下,正是Python的这些属性会带来不利。我们经常遇到的生产环境,要满足低延迟和严格部署要求。对于生产场景而言,C++通常是首选语言,也能很方便的将其绑定到另一种语言,如Java,Rust或Go。本教程将介绍从将PyTorch训练的模型序列化表示,到C++语言_加载_和_执行_的过程。

第一步:将PyTorch模型转换为Torch Script

PyTorch模型从Python到C++的转换由Torch Script实现。Torch Script是PyTorch模型的一种表示,可由Torch Script编译器理解,编译和序列化。如果使用基础的“eager”API编写的PyTorch模型,则必须先将模型转换为Torch Script,当然这也是比较容易的。如果已有模型的Torch Script,则可以跳到本教程的下一部分。

将PyTorch模型转换为Torch Script有两种方法。
第一种方法是Tracing。该方法通过将样本输入到模型中一次来对该过程进行评估从而捕获模型结构.并记录该样本在模型中的flow。该方法适用于模型中很少使用控制flow的模型。
第二个方法就是向模型添加显式注释(Annotation),通知Torch Script编译器它可以直接解析和编译模型代码,受Torch Script语言强加的约束。

小贴士
可以在官方的Torch Script 参考中找到这两种方法的完整文档,以及有关使用哪个方法的细节指导。

利用Tracing将模型转换为Torch Script

要通过tracing来将PyTorch模型转换为Torch脚本,必须将模型的实例以及样本输入传递给torch.jit.trace函数。这将生成一个 torch.jit.ScriptModule对象,并在模块的forward方法中嵌入模型评估的跟踪:

import torch
import torchvision# 获取模型实例
model = torchvision.models.resnet18()# 生成一个样本供网络前向传播 forward()
example = torch.rand(1, 3, 224, 224)# 使用 torch.jit.trace 生成 torch.jit.ScriptModule 来跟踪
traced_script_module = torch.jit.trace(model, example)

阅读全文/改进本文

PyTorch 1.0 中文官方教程:在 C++ 中加载 PYTORCH 模型相关推荐

  1. PyTorch 1.0 中文官方教程:使用 Amazon AWS 进行分布式训练

    译者:yportne13 作者: Nathan Inkawhich 编辑: Teng Li 在这篇教程中我们会展示如何使用 Amazon AWS 的两个多路GPU节点来设置,编写和运行 PyTorch ...

  2. PyTorch 1.0 中文官方教程:可选:数据并行处理

    译者:bat67 最新版会在译者仓库首先同步. 在这个教程里,我们将学习如何使用数据并行(DataParallel)来使用多GPU. PyTorch非常容易的就可以使用GPU,可以用如下方式把一个模型 ...

  3. PyTorch 1.0 中文官方教程:使用 PyTorch C++ 前端

    译者:solerji PyTorch C++ 前端 是PyTorch机器学习框架的一个纯C++接口.PyTorch的主接口是Python,Python API位于一个基础的C++代码库之上,提供了基本 ...

  4. PyTorch 1.0 中文官方教程:使用ONNX将模型从PyTorch传输到Caffe2和移动端

    译者:冯宝宝 在本教程中,我们将介绍如何使用ONNX将PyTorch中定义的模型转换为ONNX格式,然后将其加载到Caffe2中.一旦进入Caffe2,我们就可以运行模型来仔细检查它是否正确导出,然后 ...

  5. PyTorch 1.0 中文官方教程:使用 PyTorch 进行图像风格转换

    译者:bdqfork 作者: Alexis Jacq 简介 本教程主要讲解如何实现由Leon A. Gatys,Alexander S. Ecker和Matthias Bethge提出的 Neural ...

  6. PyTorch 1.0 中文官方教程:混合前端的 seq2seq 模型部署

    译者:cangyunye 作者: Matthew Inkawhich 本教程将介绍如何是seq2seq模型转换为PyTorch可用的前端混合Torch脚本. 我们要转换的模型是来自于聊天机器人教程 C ...

  7. PyTorch 1.0 中文官方教程:数据加载和处理教程

    译者:yportne13 作者:Sasank Chilamkurthy 在解决机器学习问题的时候,人们花了大量精力准备数据.pytorch提供了许多工具来让载入数据更简单并尽量让你的代码的可读性更高. ...

  8. PyTorch 1.0 中文官方教程:训练分类器

    译者:bat67 最新版会在译者仓库首先同步. 目前为止,我们以及看到了如何定义网络,计算损失,并更新网络的权重. 现在可能会想, 数据呢? 通常来说,当必须处理图像.文本.音频或视频数据时,可以使用 ...

  9. PyTorch 1.0 中文官方教程:Autograd:自动求导

    译者:bat67 最新版会在译者仓库首先同步. PyTorch中,所有神经网络的核心是autograd包.先简单介绍一下这个包,然后训练我们的第一个的神经网络. autograd包为张量上的所有操作提 ...

最新文章

  1. 中国机器人产业发展报告(2019)正式发布!
  2. web.xml 配置中classpath: 与classpath*:的区别
  3. 使用AspectJ和Spring简化了AOP
  4. Python网络编程——使用TCP方式传输文件
  5. Sharding-Proxy读写分离_Sharding-Sphere_分库分表_读写分离_工作笔记021
  6. React 开发常见报错解决方法
  7. 上了高中应该注意什么?
  8. linux+gpio+嵌入式,嵌入式Linux系统中对GPIO操作的方法总结
  9. java怎么设计一个系统吗_谁能帮我设计一个Java的文件管理系统谢谢各位
  10. java http 工具类_Java发送Http请求工具类
  11. Thread.Join 和 Task.Wait 方法
  12. 常用图像像素格式 NV12、NV2、I420、YV12、YUYV
  13. 商品进销差价_新准则下商品进销差价实务处理
  14. lower_bound 、upper_bound 、binary_search
  15. 完美解决c# 连接oracle US7ASCII字符中文乱码 亲测
  16. 陪着时光,走过羊肠阡陌
  17. 算符优先分析java程序_算符优先分析
  18. 今日multi_turtlebot3尝试
  19. GMS(Groundwater modeling system) 如何根据流域边界生成三维网格?
  20. 田睿 php,家乐福中国CEO田睿:未来谋求独立上市

热门文章

  1. 怎么把c语言改成汇编语言,如何把汇编语言转换成C语言
  2. endnote一打开就自动关闭_Endnote导出参考文献到Word
  3. 7003.node.js环境搭建及三方软件包
  4. python列表元组_Python列表元组操作
  5. c++ 项不会计算为接受 0 个参数的函数_OFFSET函数从入门到进阶之进阶操作篇(与MATCH组合)...
  6. Sysfs-设备模型上层容器
  7. mini6410 uboot board.c 分析
  8. 内核并发控制---互斥量(来自网易)
  9. 内核同步机制-读写信号量(rw_semaphore)
  10. java poi打印word_Java 打印Word文档