将深度学习模型部署为exe需要哪些工具

Python014

将深度学习模型部署为exe需要哪些工具,第1张

将深度学习模型部署为exe需要工具主要包括生产环境下PyTorch模型转换、PyTorch模型转为C++模型、生产环境下TensorFlow模型转换、生产环境下Keras模型转换、生产环境下MXNet模型转换、基于Go语言的机器学习模型部署、通用深度学习模型部署工具箱、前端UI设计资源、移动端和嵌入式模型部署、后端开发部分、基于Python的代码优化和加速等。

作者 | Python语音识别

来源 | 涛哥聊Python

虽然我们大多数人都惊叹为什么DL这么好?在使用大量数据进行训练时,它在准确性方面非常出色。近几年随着深度学习算法的发展,出现了很多深度学习的框架,这些框架各有所长,各具特色。下面将为大家介绍2019年最受欢迎的十大深度学习框架。

TensorFlow

谷歌的Tensorflow可以说是当今最受欢迎的深度学习框架。Gmail,Uber,Airbnb,Nvidia以及其他许多知名品牌都在使用。TF是目前深度学习的主流框架,Tensorflow主要特性:

TensorFlow支持python、JavaScript、C ++、Java和Go,C#和Julia等多种编程语言。 TF不仅拥有强大的计算集群,还可以在iOS和Android等移动平台上运行模型。 TF编程入门难度较大。初学者需要仔细考虑神经网络的架构,正确评估输入和输出数据的维度和数量。 TF使用静态计算图进行操作 。也就是说我们需要先定义图形,然后运行计算,如果我们需要对架构进行更改,我们会重新训练模型。选择这样的方法是为了提高效率,但是许多现代神经网络工具能够在学习过程中考虑改进而不会显着降低学习速度。在这方面,TensorFlow的主要竞争对手是PyTorch 。

TensorFlow优点:

它非常适合创建和试验深度学习架构,便于数据集成,如输入图形,SQL表和图像。 它得到谷歌的支持,这就说明该模型短期内不会被抛弃,因此值得投入时间来学习它。 PyTorch

Tensorflow之后用于深度学习的主要框架是PyTorch。PyTorch框架是Facebook开发的,已被Twitter和Salesforce等公司使用。

PyTorch基本特性:

与TensorFlow不同,PyTorch库使用动态更新的图形进行操作 。这意味着它可以在流程中更改体系结构。 在PyTorch中,您可以使用标准调试器 ,例如pdb或PyCharm。

PyTorch优点:

训练神经网络的过程简单明了。同时,PyTorch支持数据并行和分布式学习模型,并且还包含许多预先训练的模型。 PyTorch更适合小型项目和原型设计。 Sonnet

Sonnet深度学习框架是建立在TensorFlow的基础之上。它是DeepMind用于创建具有复杂架构的神经网络。

Sonnet基本特性:

面向对象的库,在开发神经网络(NN)或其他机器学习(ML)算法时更加抽象。 Sonnet的想法是构造对应于神经网络的特定部分的主要Python对象。此外,这些对象独立地连接到计算TensorFlow图。分离创建对象并将其与图形相关联的过程简化了高级体系结构的设计。

Sonnet优点:

Sonnet的主要优点是可以使用它来重现DeepMind论文中展示的研究,比Keras更容易,因为DeepMind论文模型就是使用Sonnet搭建的。 Keras

Keras是一个机器学习框架,如果您拥有大量数据和/或你想快速入门深度学习,那么Keras将非常适合学习。Keras是TensorFlow高级集成APi,可以非常方便的和TensorFlow进行融合。这是我强烈推荐学习的一个库。

Keras基本特性:

除了Tensorflow之外,Keras还是其他流行的库(如Theano和CNTK)的高级API。 在Keras中更容易创建大规模的深度学习模型,但Keras框架环境配置比其他底层框架要复杂一些。

Keras优点:

对于刚刚入门的人来说,Keras是最好的深度学习框架。它是学习和原型化简单概念的理想选择,可以理解各种模型和学习过程的本质。 Keras是一个简洁的API。 可以快速帮助您创建应用程序。 Keras中代码更加可读和简洁。 Keras模型序列化/反序列化API,回调和使用Python生成器的数据流非常成熟。

顺便说一下TensorFlow和Keras的对比:

PS:Tensorflow处于底层框架:这和MXNet,Theano和PyTorch等框架一样。包括实现诸如广义矩阵 - 矩阵乘法和诸如卷积运算的神经网络原语之类的数学运算。

Keras处于高度集成框架。虽然更容易创建模型,但是面对复杂的网络结构时可能不如TensorFlow。

MXNet

MXNet是一种高度可扩展的深度学习工具,可用于各种设备。虽然与TensorFlow相比,它似乎没有被广泛使用,但MXNet的增长可能会因为成为一个Apache项目而得到提升。

MXNet基本特性:

该框架支持多种语言,如C ++,Python,R,Julia,JavaScript,Scala,Go,甚至Perl。 可以在多个GPU和许多机器上非常有效地并行计算。

MXNet优点:

支持多个GPU(具有优化的计算和快速上下文切换) 清晰且易于维护的代码(Python,R,Scala和其他API) 快速解决问题的能力(对于像我这样的深度学习新手至关重要)

虽然它不像TF那么受欢迎,但MXNet具有详细的文档并且易于使用,能够在命令式和符号式编程风格之间进行选择,使其成为初学者和经验丰富的工程师的理想选择。

GLUON

Gluon是一个更好的深度学习框架,可以用来创建复杂的模型。GLUON基本特性:

Gluon的特殊性是具有一个灵活的界面,简化了原型设计,构建和培训深度学习模型,而不会牺牲学习速度。 Gluon基于MXNet,提供简单的API,简化深度学习模型的创建。 与PyTorch类似,Gluon框架支持使用动态图表 ,将其与高性能MXNet相结合。从这个角度来看,Gluon看起来像是分布式计算的Keras非常有趣的替代品。

GLUON优点:

在Gluon中,您可以使用简单,清晰和简洁的代码定义神经网络。 它将训练算法和神经网络模型结合在一起,从而在不牺牲性能的情况下提供开发过程的灵活性。 Gluon可以定义动态的神经网络模型,这意味着它们可以动态构建,使用任何结构,并使用Python的任何本机控制流。 SWIFT

当你听到Swift时,您可能会考虑iOS或MacOS的应用程序开发。但是如果你正在学习深度学习,那么你一定听说过Swens for Tensorflow。通过直接与通用编程语言集成,Swift for TensorFlow可以以前所未有的方式表达更强大的算法。SWIFT基本特性:

可以轻松获得可微分的自定义数据结构。 下一代API 。通过实践和研究获得的新API更易于使用且更强大。 在TensorFlow的基础上 ,Swift API为您提供对所有底层TensorFlow运算符的直接调用。 基于Jupyter、LLDB或者Swift in Colab的编程工具提高了您的工作效率。

SWIFT优点:

如果动态语言不适合您的任务,那么这将是一个很好的选择。当你训练运行了几个小时,然后你的程序遇到类型错误,那么使用Swift,一种静态类型语言。您将看到代码错误的地方。 Chainer

直到CMU的DyNet和Facebook的PyTorch出现之前,Chainer是动态计算图或网络的领先神经网络框架,它允许输入数据长度不一致。chainer基本特性:

Chainer代码是在Numpy和CuPy库的基础之上用纯Python编写的, Chainer是第一个使用动态架构模型的框架。

Chainer优点:

通过自己的基准测试,Chainer明显比其他面向Python的框架更快,TensorFlow是包含MxNet和CNTK的测试组中最慢的。 比TensorFlow更好的GPU和GPU数据中心性能。最近Chainer成为GPU数据中心性能的全球冠军。 DL4J

那些使用Java或Scala的人应该注意DL4J(Deep Learning for Java的简称)。DL4J的基本特性:

DL4J中的神经网络训练通过簇的迭代并行计算。 该过程由Hadoop和Spark架构支持。 使用Java允许您在Android设备的程序开发周期中使用。

DL4J优点:

如果您正在寻找一个良好的Java深度学习框架,这会是一个非常好的平台。 ONNX

ONNX项目诞生于微软和Facebook,旨在寻找深度学习模型呈现的开放格式。ONNX简化了在人工智能的不同工作方式之间传递模型的过程。因此ONNX具有各种深度学习框架的优点。

ONNX基本特性:

ONNX使模型能够在一个框架中进行训练并转移到另一个框架中进行推理。ONNX模型目前在Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch中得到支持,并且还有许多其他常见框架和库的连接器。

ONNX优点:

对于PyTorch开发人员来说,ONNX是一个好的选择。但是对于那些喜欢TensorFlow的人来说,Keras等可能好一点。 总结

那么您应该使用哪种深度学习框架?下面是几点建议:

如果你刚刚开始学习,那么最好的选择是Keras 。 出于研究目的,请选择PyTorch 。 对于生产,您需要关注环境。因此对于Google Cloud,最好的选择是TensorFlow ,适用于AWS - MXNet和Gluon 。 Android开发人员应该关注D4LJ ,对于iOS来说, Core ML会破坏类似的任务范围。 最后, ONNX将帮助解决不同框架之间的交互问题。

这样生成,第一步,用网格建构几何体造型

1.1 用网格立方体指令MeshBox以以下参数在场景中生成一个立方体网格

◆定位方式:中心点

◆X、Y、Z网格数量:1

◆长、宽、高:120mm

4ffb78ff09ca566aa38de58d7b6d2887.png

1.2 选取这个立方体网格,在指令提示栏内键入subdivide指令,对立方体网格进行一次细分操作,回车确认后得到以下结果

0d04b57f2fee50e79c394afac4ae4825.png

▲每一个网格都被细分成4个

1.3 开启网格的控制点(F10键),用SetPt指令与操作轴来调整网格的外形,让它接近图片内底座的外形

f52515a9f6325f37500fd1c217e7e7aa.gif

1.4 使用Gumball操作轴,按住Ctrl+Shift键选取顶部的网格后挤出新网格面,以3轴收缩这些网格面,最后生成底座的凹陷特征

4d5fa7ef768f5106df6afb2ba616cdcc.gif

000a6340ad9d289bd9f32c28a368508c.png

▲得到这个结果

1.5 打开过滤器Filter,只勾选子物体及点和顶点,这样方便我们选取,然后调整顶部的造型

a952c6d5dc6de27fb0e9f3d932c5535f.png

cbaf2ad5ab060eed12f8098e6d46f66b.gif

▲每次操作完成后记得勾选停用过滤器

f7916f50e11c9480cf44a684a6d3ce7e.png

▲得到这个结果

1.6 继续用操作轴、SetPT挤出并调整出底座连接处的形状

1fe6501df44b8a8be92d6d2046aad2f0.gif

a4705350b3c2bd12b72749f9d6f80e11.gif

▲可切换至半透明显示模式,方便选取

第二步,生成环绕圆管造型

2.1 在前视图,Curve指令以放置控制点的方式建立环绕状的曲线,以用作后续生成圆管之用。

f03cc4b53cbfc6590ede9ad67334b767.gif

2.2 先确认已开启了记录建构历史,再用这曲线以Pipe指令生成圆管

d617ea1300c24145011e8d0fe7b29e5e.png

09a998212005b381ee5a68338aa7be7f.gif

▲选项中点击为不加盖

2.3 打开过滤器,只勾选曲线和控制点两项,打开这曲线的控制点来调整它的空间形态,最后使圆管符合参考图的形态

88556dfaede9a727a272934900f7a9ba.gif

▲带有建构历史来生成圆管空间形态

第三步,转换成网格进行编辑

3.1 选取圆管曲面,用Rebuild指令进行曲面重建,参数设定见下图:

24cd0f199d873aae820778487df12d91.gif

3.2 选取重建后的圆管,用Mesh指令以下图所示网格选项把曲面转换成网格,最后删除曲面只保留网格对象

92d2208636e4c465546d8b238e15f1fe.gif

3.3 按着Ctrl+Shift键,按下图所示选取并删除网格

ab673bb74102b000c1276866c9bad5cd.gif

第四步,生成细分曲面

4.1 使用3DFace指令,把底座与管子间以4边结构的方式进行逐一连接,最后再把管子的开口封闭上。

4.2 连接完成后框选整个模型,用Join指令把所有网格组合成一体

4.3 在指令提示栏中键入subdfrommesh指令,选取模型后回车确定,生成细分曲面

5c8045a7b27e55b18d7b46f00b3d3d54.gif

▲4.1-4.3步骤如动图所示

第五步,细分曲面转换成NURBS实体

5.1 当牙刷架的形态确定后,用ToNurbs指令把这个细分曲面转成NURBS曲面,最后组合成一个实体

5b20176e57bdf80ec9b32f59c5813319.gif

第六步,快速渲染

通过快速设定场景、材质、灯光后,切换到光线跟踪显示模式(Cycles引擎),即可快速得到一张效果不错的渲染图

52e36f7035dc277d18ece7a125732e93.png

点击

Rhino 6 渲染公开课_腾讯课堂​ke.qq.com

3a7c009a8b39b99ca515fa7d4c568671.png

免费学习Rhino 6 产品渲染教学

欢迎关注Rhino原厂微信公众平台,每周都有新技能分享哦~

fc244b6903c2906cd9e0e4abf8fd76f4.png

相关资源:RHINO犀牛软件入门教程-软考工具类资源-CSDN文库

打开CSDN APP,看更多技术内容

图片跟着鼠标_Rhino细分建模分享 Part2鼠标底部造型与细节_邓凌佳的博...

目前RhinoWIP 还没有直接提供细分顶点、边线与片面的过滤工具,所以选择的时候需要比较细心一些,推荐使用Ctrl+Shift+鼠标左键选取子物件的方式,选取细分特征时双击鼠标左键还可以实现快速 Loop选择,例如上图中最后的RemoveCrease 2.2细分建模...

继续访问

检测鼠标是否双击_Rhino细分建模分享 Part3 鼠标简易结构设计_weixin_39...

这里提供两个方法进行干涉检查,RhinoWIP的新增功能 Clash ,这工具可以分两组选择,然后在两组之间快速的找到干涉的位置。 2.2 第二个方法是使用两组物件之间计算相交线的工具 IntersectTwoSets,见以下GIF: 提示: 如果使用 IntersectTwoSets...

继续访问

pipe flow expert 教程

pipe flow expert 教程 2013版本

PipeTransformer:适用于大规模模型分布式训练的自动化弹性管线

内容导读 本文围绕一篇论文展开,探讨了 PyTorch DDP (torch.nn.parallel) 以及 Pipeline (torch.Distributed.Pipeline) 的加速混合。 本文首发自微信公众号「PyTorch 开发者社区」 论文题目: PipeTransformer: Automated Elastic Pipelining for Distributed Training of Large-scale Models(PipeTransformer: 用于大规模模型分布式训.

继续访问

史上最全三维建模软件汇总_普通网友的博客_最容易入门的...

3、Rhino Rhinocero,简称Rhino,又叫犀牛,是一款三维建模工具。不过不要小瞧它,它的基本操作和AutoCAD有相似之处,拥有AutoCAD基础的初学者更易于掌握犀牛。目前广泛应用于工业设计、建筑、家具、鞋模设计,擅长产品外观造型建模。 4、Zbrush ...

继续访问

OCTO 2.0:美团基于Service Mesh的服务治理系统详解_美团技术团队的博客...

基础设施是指美团现有的服务治理系统OCTO1.0,包括MNS、KMS(鉴权管理服务)、MCC(配置管理中心)、Rhino(熔断限流服务)等。这些系统接入到OCTO 2.0的控制平面,避免过多重构引入的不必要成本。

继续访问

进程(四):进程间通信 —— Queue(队列)和Pipe(管道)

目录 进程间通信 队列 概念介绍 方法介绍 代码实例 生产者消费者模型 JoinableQueue([maxsize]) 管道(了解) 进程间通信 IPC(Inter-Process Communication) 队列 概念介绍 创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。 ●Queue([maxsize]) 创建...

继续访问

PIPE 使用介绍

文章目录一、pipe 简介二、pipe 代码示例 一、pipe 简介 pipe 也叫无名管道,有如下特点: 半双工,同一时刻数据只能一端操作 数据只能从一端写入,从另一端读出 存储在内存缓冲区,不存储在文件系统中,只能用于父子进程通信 数据一旦从管道中读走,就从管道中释放空间 二、pipe 代码示例 创建无名管道,其中 fd[0] 固定用于读管道,而 fd[1] 固定用于写管道 一般文件 I/O 的函数都可以用来操作管道( lseek() 除外) 默认情况当管道里没有数据时,另一个进程调用 read(

继续访问

3dmax软件给模型添加标注尺寸教程_3d模型的博客_3dmax做的模型...

步骤一、使用3dmax软件的“工具”—“测量距离”,可以测量任意位置的距离。包括模型之间的尺寸。 步骤二、我们可以看到使用3dmax软件测量距离工具后的模型尺寸结果。接下来我们需要将尺寸数据添加标注到模型上。

继续访问

Rhino5曲面造型插件Autodesk T-Splines v4.0.r11183_rrjjzzyy00的博客...

Rhino5曲面造型插件Autodesk T-Splines v4.0.r11183 Autodesk T-Splines结合了Nurbs和细分表面建模技术的特点,虽然和Nurbs很相似,不过它极大地减少了模型表 面上的控制点数目,可以进行局部细分和合并两个Nurbs面片等操作,使你的建模操作...

继续访问

Go语言并发模型:像Unix Pipe那样使用channel

简介 Go语言的并发原语允许开发者以类似于 Unix Pipe 的方式构建数据流水线 (data pipelines),数据流水线能够高效地利用 I/O和多核 CPU 的优势。 本文要讲的就是一些使用流水线的一些例子,流水线的错误处理也是本文的重点。 阅读建议 数据流水线充分利用了多核特性,代码层面是基于 channel 类型 和 go ...

继续访问

pipe建模工具使用_PDMS进行管道建模的一些方法及操作技巧,快来Get!

2.通过网络实现多专业实时协同设计、真实的现场环境,多个专业组可以协同设计以建立一个详细的3D数字工厂模型,每个设计者在设计过程中都可以随时查看其它设计者正在干什么;3.交互设计过程中,实时三维碰撞检查,PDMS能自动地在元件和各专业设计之间进行碰撞检查,在整体上保证设计结果的准确性;4.拥有独立的数据库结构,元件和设备信息全部可以存储在参数化的元件库和设备库中,不依赖第三方数据库;5.开放的开发...

继续访问

8款超级好用的3D建模软件上下篇_李旭me的博客_3d建模软件

Rhino,又称犀牛,是由美国Robert McNeel公司于1998年推出的一款基于NURBS为主三维建模软件。功能齐全、价格实惠、对用户友好,很多中小工作室都在使用Rhino来设计产品。 作为近年来在工业、建筑等领域最流行的软件,Rhino的建模思路十分自由,但...

继续访问

浅谈管道模型(Pipeline)

本篇和大家谈谈一种通用的设计与处理模型——Pipeline(管道)。 Pipeline简介 Pipeline模型最早被使用在Unix操作系统中。据称,如果说Unix是计算机文明中最伟大的发明,那么,Unix下的Pipe管道就是跟随Unix所带来的另一个伟大的发明【1】。我认为管道的出现,所要解决的问题,还是软件设计中老生常谈的设计目标——高内聚,低耦合。它以一种“链式模型”来串接不同的程序或者不同...

继续访问

pipe建模工具使用_GraphPipe

软件简介GraphPipe 是甲骨文开源的通用深度学习模型部署框架。官方对 GraphPipe的定义为,这是一种协议和软件集合,旨在简化机器学习模型部署并将其与特定于框架的模型实现分离。甲骨文表示,这一新工具可提供跨深度学习框架的模型通用 API、开箱即用的部署方案以及强大的性能。GraphPipe 为在网络上传递张量数据(tensordata)提供了一个标准、高性能的协议,以及提供了客户端和服务...

继续访问

Select模型(PIPE)

Lin中的函数select和poll用来,支持Unix中I/O复用的功能,在Unix中I/O模型可以分为以一几种: (1)阻塞I/O (2)非阻塞I/O (3)I/O复用(select和poll) (4)信号驱动I/O(SIGIO) (5)异步I/O其中,现在比较流行的I/O模型是阻塞I/O模型.阻塞I/O是当应用程序和内核交换数据时,由于内核还没有准备

继续访问

深入理解PIPE

转载:http://blog.ddup.us/?p=285 在linux中要进行进程间通信有多种方法:pipe、fifo、共享内存,信号量,消息队列,共享文件等等。其中pipe和fifo 使用最广泛,二者的区别为pipe为匿名管道,只能用在有父子关系的进程间通信,而fifo可以通过文件系统中的一个文件取得,所以不受上述限制。作为父子进程间通信的通道,pipe同样可以看作是一个先进先出的

继续访问

最新发布 HQoS配置学习

传统的QoS基于端口进行流量调度,无法区分用户和用户不同的业务。HQoS可以针对每个用户的业务流进行队列调度。

继续访问

犀牛重建曲面_犀牛建模常用命令及思路分析

犀牛建模常用命令及思路分析对于新手刚接触犀牛建模的软件都是比较懵懂,有许多的细节都不太了解,所以需要许多资料和教程来教新手学会这些技能,从建模到渲染这些步骤,好的技术都是不断操练才有所效果的,一起来看看给新人的犀牛建模常用技巧!首先我们大家要对视图进行认识了解视图一般默认为四个视图(正视图、顶视图、透视图、右视图)也可以根据自己的需求更改添加视图点击视图名称右键里面可以根据自己的需要更改视图的模式...

继续访问

Linux网络编程 - 在服务器端运用进程间通信之管道(pipe)

本文主要讲解进程间通信之一的管道(匿名管道)方式,讨论Linux系统中管道的工作原理及其使用方法,并将管道机制运用在Linux网络编程之中。

继续访问

热门推荐 Linux进程间通信分类 以及 pipe的原理实现

http://blog.sina.com.cn/s/blog_4a84bd960100by8s.html http://home.lupaworld.com/home-space-uid-296848-do-blog-id-230801.html 一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境下的几种

继续访问

Rhino显示左边的工具栏

步骤 顶部菜单“工具” >“选项” 左边的“Rhino选项” >展开“工具列” >“大小和型式” 勾选“显示边栏” >确定

继续访问

pipe建模工具使用_pipe4.3 petri网软件

【实例简介】petri网建模工具pipe4.3,需要先配置java环境【实例截图】【核心代码】PIPEv4.3.0├── __MACOSX│ └── PIPEv4.3.0└── PIPEv4.3.0├── launch.bat├── launch.sh├── Pipe│ ├── cfg│ │ ├── classification.properties│ │ ├── comp...

继续访问

7分钟学会匿名管道pipe()的使用(内附完整代码测试)

7分钟学会匿名管道pipe()的使用(内附完整代码测试)

继续访问

细分曲面—增加细分曲面对象

NURBS是大部分三维软件支持的一种优秀的建模方式,它能很好的控制物体表面的曲线度,从而创建出更逼真、更生动的造型。NURBS是非均匀有理样条曲线的缩写。 Cinema 4D提供的NURBS建模方式分为细分曲面、挤压、旋转、放样、扫描和贝塞尔6种。 细分曲面 : 挤压 旋转 放样 扫描 贝塞尔 ...

继续访问

Rhino 6 偏移曲面 选项有很多玄机

Rhino 6 偏移曲面 选项 要打开圆角选项 偏移的曲面就是一个整体。 倒角可以选择两面的一面曲线来倒角。

继续访问

linux下面的pipe命令

pipe命令在linux shell中是很重要的概念管道pipe,意思是上一次命令的输出是下一个命令的输入,但是,我们知道,一个命令的输出,是没有固定格式的如ls -l一样,输出的是大段大大段的数据,那么我们怎么把这些数据格式化成为我们下一个命令能用的呢?这就要用linux下面的一些管道命令了;1)cut: cut -d “分隔符” -f "区快" -c "字符界限" 如: cut /et

继续访问

rhino细分工具讲解

pipe建模工具使用

写评论