目录

介绍

模型的问题

运行时问题

下一步

代码示例

参考文献


  • 下载源547.1 KB

系列文章列表如下:

ONNX系列一 --- 带有ONNX的便携式神经网络

ONNX系列二 --- 使用ONNX使Keras模型可移植

ONNX系列三 --- 使用ONNX使PyTorch AI模型可移植

ONNX系列四 --- 使用ONNX使TensorFlow模型可移植

ONNX系列五 --- 在C#中使用可移植的ONNX AI模型

ONNX系列六 --- 在Java中使用可移植的ONNX AI模型

ONNX系列七 --- 在Python中使用可移植的ONNX AI模型

介绍

预训练的神经网络无处不在。无论您要解决什么问题,都很有可能其他人已经训练了神经网络来做到这一点。如果有人已经花了很多时间和金钱来训练模型,那为什么要重新发明轮子。

像ONNX Model Zoo 这样的集合让你很容易找到下一个顶级模型。但是,如果找到的模型不是您想要使用的格式,该怎么办?我们真正需要的是便携式神经网络——这正是ONNX格式所提供的。本系列将探讨如何将常见的AI模型格式转换为ONNX格式——然后在您的应用程序中使用它们。阅读完毕后,您将对2020年如何使用便携式神经网络有完整的了解。

要了解ONNX及其提供的价值,您必须首先了解其解决的问题。如果您修改了机器学习算法并创建了一个仅由您自己使用的模型(来自创建模型的同一项目),那么您就不会遇到机器学习问题。另一方面,如果您对当前项目负有DevOps的责任,并且必须生产由数据科学家团队创建的模型,那么您就遇到了机器学习问题。

模型的问题

机器学习问题是由以下事实引起的:如今,必须使用与创建模型相同的语言和框架来提供模型。例如,当您使用Python和Keras创建神经网络并准备将模型部署到生产环境时,运行该模型的服务将需要用Python编写,并且需要同时安装Python和Keras在您的生产环境中。

在微服务环境中,这听起来似乎没什么大不了的——在其中安装了Python和Keras的情况下创建镜像,将镜像部署到容器中,并通过RESTful API提供预测。但是,也许您的团队中没有任何Python专家,或者您的工程工作流程针对一种语言进行了优化,并且没有很多质量检验关方法(静态代码分析,单元测试,端对端测试和安全扫描)适用于Python。这两种情况在使用C#或Java进行了标准化的大型企业中非常常见。让不熟悉Python或Keras的工程师部署和维护进行预测的服务并不理想。同样,在没有进行所有适当质量检查的情况下部署服务只会将故障引入整个应用程序。

理想的解决方案是使模型具有通用格式,从而允许从任何语言使用所有类型的模型(传统的机器学习模型以及神经网络)。

运行时问题

机器学习问题不仅仅是语言之间缺乏模型互操作性。批处理模式或实时服务模型都可能需要大量计算。

理想的解决方案是拥有一个运行时,该运行时可以从每种编程语言访问,并能够以针对基础硬件进行优化的方式来服务模型。

下一步

本文是七篇系列文章中的第一篇,我们将探讨ONNX在三种流行的框架和三种流行的编程语言方面的价值。

接下来的三篇文章将介绍从用于构建神经网络的三个流行框架中创建ONNX模型的过程。由于ONNX不提供训练模型的功能,因此我将简要概述每个框架,以便您选择最佳的模型来训练模型。每个框架都有一个不同的软件包,需要安装这些软件包才能转换为ONNX。这将涵盖每个框架。最后,从每个框架导出模型时,需要注意一些独特的陷阱。

最后三篇文章将演示如何使用Python,C#和Java服务ONNX模型。与之前的文章类似,他们将探讨每种语言的一些独特问题。

每篇文章都有自己的特色。因此,例如,如果您知道您的数据科学团队使用了PyTorch,并且需要从Java中使用经过训练的模型,那么您可以直接阅读PyTorch和Java上的两篇文章,您将一切准备就绪。

代码示例

如果没有大量代码示例,那么关于ONNX的系列文章将会是什么?Github上有一个配套存储库,其中包含本系列中显示的所有代码的工作副本。我打算不断改进这些demo,并添加来自ONNX Model Zoo的更多演示和示例,因此请经常查看此存储库。

参考文献

  • https://www.tensorflow.org/
  • https://github.com/onnx/tensorflow-onnx
  • https://keras.io/
  • https://github.com/onnx/keras-onnx
  • https://pytorch.org/
  • https://pytorch.org/docs/stable/onnx.html
  • https://microsoft.github.io/onnxruntime/
  • https://github.com/microsoft/onnxruntime/blob/master/docs/CSharp_API.md#getting-started
  • https://microsoft.github.io/onnxruntime/ https://github.com/microsoft/onnxruntime/blob/master/docs/Java_API.md#getting-started
  • https://microsoft.github.io/onnxruntime/python/api_summary.html
  • https://github.com/keithpij/onnx-lab

ONNX系列一 --- 带有ONNX的便携式神经网络相关推荐

  1. ONNX系列四 --- 使用ONNX使TensorFlow模型可移植

    目录 TensorFlow简介 安装和导入转换器 快速浏览模型 将TensorFlow模型转换为ONNX 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- ...

  2. ONNX系列三 --- 使用ONNX使PyTorch AI模型可移植

    目录 PyTorch简介 导入转换器 快速浏览模型 将PyTorch模型转换为ONNX 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- 带有ONNX的便携 ...

  3. ONNX系列二 --- 使用ONNX使Keras模型可移植

    目录 Keras简介 快速浏览模型 安装和导入转换器 将Keras模型转换为ONNX 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- 带有ONNX的便携式 ...

  4. ONNX系列七 --- 在Python中使用可移植的ONNX AI模型

    目录 安装和导入ONNX运行时 载入ONNX模型 使用ONNX运行时进行预测 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- 带有ONNX的便携式神经网络 ...

  5. ONNX系列六 --- 在Java中使用可移植的ONNX AI模型

    目录 安装和导入ONNX运行时 载入ONNX模型 使用ONNX运行时进行预测 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- 带有ONNX的便携式神经网络 ...

  6. ONNX系列五 --- 在C#中使用可移植的ONNX AI模型

    目录 安装和导入ONNX运行时 载入ONNX模型 使用ONNX运行时进行预测 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- 带有ONNX的便携式神经网络 ...

  7. 模型推理加速系列|如何用ONNX加速BERT特征抽取(附代码)

    简介 近期从事模型推理加速相关项目,所以抽空整理最近的学习经验.本次实验目的在于介绍如何使用ONNXRuntime加速BERT模型推理.实验中的任务是利用BERT抽取输入文本特征,至于BERT在下游任 ...

  8. Python: 从PYTORCH导出模型到ONNX,并使用ONNX运行时运行它

    Python: 从PYTORCH导出模型到ONNX,并使用ONNX运行时运行它 本教程我们将描述如何将PyTorch中定义的模型转换为ONNX格式,然后使用ONNX运行时运行它. ONNX运行时是一个 ...

  9. 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子

    深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子 作者:寒小阳  时间:2016年1月.  出处:http://blog.csdn.net/han_xiaoyang/article/de ...

最新文章

  1. JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
  2. 修改sga后oracle打不开的解决方法
  3. C语言学习之一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高。
  4. SAP Commerce Cloud 的 build 过程
  5. aes加密字符串c++_springboot2.2.X手册:防抓包?快速实现API接口数据加密
  6. MFCButton Memory leak(内存泄露问题)
  7. Python使用正则表达式检查书稿中不应该出现的重复字
  8. linux ftp 实例
  9. 线性表之顺序存储结构
  10. 游戏设计创造对话探秘之迭代
  11. linux0.11内核完全注释读书笔记
  12. 爱的十个秘密--7.舍弃的力量
  13. 在网页中插入MediaPlayer控件
  14. NetLimiter Pro
  15. python tokenize怎么用_tokenize --- 对 Python 代码使用的标记解析器 — Python 3.9.1 說明文件...
  16. Matlab 乱码问题解决方法
  17. PEEKABOO——冲刺总结
  18. 鱼书P70--mnist.py的导入和应用
  19. JAVA学习-JDK8环境的安装与卸载
  20. 2016年保密技术交流大会的璀璨之星—亿赛通

热门文章

  1. 女生做产品经理好吗_谁说女生不适合做产品经理?
  2. 斜视术后融合训练方法_做斜视手术两年后又复发了怎么办?
  3. MySQL回放_mysql回顾
  4. pbdom 不能解析gbk_备受家长追捧的公立学校,摇中率不到3%,还要抢着报名?速看大摇号学校全面解析!...
  5. mysql 一列数据变为一条_SQL 一列数据整合为一条数据
  6. socket接收时信号量阻塞了会丢数据吗_浅谈Java网络编程——非阻塞I/O
  7. 文件的上传、文件的下载、I18N国际化
  8. Linux RMAP
  9. Zookeeper 教程:Zookeeper作为Hadoop和Hbase的重要组件,为分布式应用程序协调服务
  10. Docker Hello World