假如您正在开始捷伊机器自学或广度自学工程项目,您可能会对优先选择别的架构深感疑惑。正像他们即将探讨的那般,这三种工程项目都有几个极好的优先选择。
机器自学架构和广度自学架构之间存在差别。其本质上,机器自学架构囊括了用作分类,重回,控制点,极度检验和统计数据准备的各式各样自学方式,因此能主要包括或不主要包括微积分微积分模型方式。
广度自学或广度微积分微积分模型架构囊括了具有许多暗藏层的各式各样微积分微积分模型拓扑。Keras,MXNet,PyTorch和TensorFlow是广度自学的架构。Scikit-learn和Spark MLlib是机器自学架构。(空格键从前的任何镜像以写作我对产品的分立文章。)
一般来说,广度微积分微积分模型排序在GPU(特别是Nvidia CUDA通用型GPU),TPU或FPGA 上运转得更慢,而并非在CPU上运转。一般来说,更单纯的机器自学方式不会受惠于GPU。
虽然你能在两个或数个CPU上体能训练广度微积分微积分模型,但体能训练常常非常快,而且我说的并非秒或两分钟。须要体能训练的突触和层越多,可用作体能训练的统计数据越多,所需的天数就越长。当Google Brain项目组在2016年为旧版Google译者专业培训其词汇译者微积分模型时,他们会在数个GPU上一次运转两周的专业培训专业课程。假如没有GPU,每一微积分模型专业培训试验都须要数年天数。
从那以后,AMD微积分核心理念库(MKL)就能在科学合理的天数外在CPU上体能训练一些微积分微积分模型。在此之后,GPU,TPU和FPGA的速率更慢。
在完全相同GPU上运转的所有深度自学包的体能训练速率几乎完全相同。这原因在于体能训练内循环将绝大部分天数花在Nvidia CuDNNP43EB96SJ。
除了体能训练速率以外,每一广度自学库都有自己的缺点和缺点,Scikit-learn和Spark MLlib也是如此。让他们逃出。
Keras
Keras是两个用作构筑微积分微积分模型微积分模型的高阶后端规范化和实现,它支持三个后端广度自学架构:TensorFlow,CNTK和Theano。Amazon目前正致力为Keras合作开发MXNet后端。也能使用PlaidML(两个分立工程项目)作为Keras的后端,以利用PlaidML对所有GPU的OpenCL支持。
TensorFlow是Keras的默认后端,也是推荐用作通过CUDA和cuDNN在Nvidia硬件上进行GPU加速的许多用例以及Google Cloud中的TPU加速的后端。TensorFlow还包含两个内部tf.keras类,与外部Keras安装分开。
Keras具有高阶环境,使得在微积分微积分模型中添加一层像其顺序微积分模型中的一行代码一样单纯,因此每一只须要两个函数调用来编译和体能训练微积分模型。Keras允许您根据须要使用其微积分模型或功能API在较低级别工作。
Keras允许您通过子类化进一步下载到Python编码级别keras.Model,但在可能的情况下更喜欢功能API。Keras还有两个scikit-learnAPI,因此您能使用Scikit-learn网格搜索在Keras微积分模型中执行超参数优化。
MXNet
自从2017年初在Apache软件基金会的支持下移动以来,MXNet已经发展和改进了很多。虽然在Keras上有两个MXNet后端的工作,但是不同的高阶接口变得更加重要:Gluon。在合并Gluon之前,您能在MXNet中编写单纯的命令式代码或快速符号代码,但不能同时编写两者。使用Gluon,您能以与Keras和PyTorch竞争的方式结合两者中的缺点。
Gluon的优势主要包括:
单纯易懂的代码:Gluon提供了一整套即插即用的微积分微积分模型构筑块,主要包括预定义的层,优化器和初始化器。灵活,强制性的结构:Gluon不须要严格定义微积分微积分模型微积分模型,而是将体能训练算法和微积分模型更紧密地结合在一起,以便在合作开发过程中提供灵活性。动态图:Gluon使合作开发人员能够定义动态的微积分微积分模型微积分模型,这意味着它们能动态构筑,使用任何结构,并使用Python的任何本机控制流。高性能:Gluon提供上述所有缺点,而不会影响底层引擎提供的体能训练速率。这四个缺点,以及大量扩展的微积分模型示例集,使Gluon / MXNet与Keras / TensorFlow和PyTorch大致完全相同,以便于合作开发和专业培训速率。您能在Gluon主页面上查看每一代码示例,并在Gluon API的概述页面上重复。
Gluon API主要包括微积分微积分模型层,递归微积分微积分模型,损失函数,统计数据集方式和视觉统计数据集,微积分模型动物园以及一组贡献的试验微积分微积分模型方式的功能。能自由地与标准MXNet和NumPy的模块结合胶子,例如module,autograd,和ndarray,以及与Python控制流。
Gluon具有很好的层建筑微积分模型优先选择,主要包括基本层(密集,辍学等),卷积层,池层和激活层。这些都是一线电话。这些能在网络容器内部使用,例如gluon.nn.Sequential()。
PyTorch
PyTorch建立在旧的Torch和捷伊Caffe2架构之上。正像您可能从名称中猜到的那般,PyTorch使用Python作为其脚本词汇,它使用了两个演进的Torch C / CUDA后端。Caffe2的生产功能正在纳入PyTorch工程项目。
PyTorch被称为“具有强大GPU加速功能的Python中的张量和动态微积分微积分模型。”这意味着什么?
张量是一种在物理学和工程学中大量使用的微积分结构。二级张量是一种特殊的矩阵; 利用张量取向量的内积得到另两个具有新量值和新方向的向量。TensorFlow的名称来自张量(突触权重)在其网络微积分模型中流动的方式。NumPy也使用张量,但称之为ndarray。
GPU加速是大多数现代广度微积分微积分模型架构的基础。甲动态微积分微积分模型是两个能从迭代改变迭代中,例如允许PyTorch微积分模型来添加和体能训练期间删除暗藏层以提高其精度和通用型性。PyTorch在每一迭代步骤中即时重新创建图形。相比之下,TensorFlow默认创建单个统计数据流图,优化图代码以提高性能,然后体能训练微积分模型。
虽然急切执行 模式在TensorFlow中是两个相当捷伊选项,但它是PyTorch运转的唯一方式:API调用在调用时执行,而并非添加到图形以便稍后运转。这可能看起来排序效率会低一些,但是PyTorch的设计就是以这种方式工作,而且在体能训练或预测速率方面并不吝啬。
PyTorch集成了加速库,如AMDMKL和Nvidia cuDNN以及NCCL(Nvidia集体通信库),以最大限度地提高速率。其核心CPU和GPU Tensor和微积分微积分模型后端-TH(Torch),THC(Torch CUDA),THNN(Torch微积分微积分模型)和THCUNN(Torch CUDA微积分微积分模型) – 作为具有C99 API的分立库编写。同时,PyTorch并非Python绑定到单片C ++架构 – 其目的是与Python广度集成并允许使用其他Python库。
Scikit-learn
该Scikit自学 Python的框架有两个广泛的优先选择稳健的机器自学算法,但没有广度自学。假如您是Python粉丝,Scikit-learn可能是普通机器自学库中最合适的优先选择。
Scikit-learn是两个功能强大且经过充分验证的Python机器自学库,具有各式各样成熟的算法和集成图形。它相对容易安装,自学和使用,因此它有很好的示例和教程。
另外,Scikit-learn不主要包括广度自学或强化自学,缺乏图形微积分模型和序列预测,因此它不能真正用作Python以外的词汇。它不支持PyPy,Python即时编译器或GPU。也就是说,除了对微积分微积分模型的轻微尝试以外,它并没有真正的速率问题。它使用Cython(Python到C编译器)来处理须要快速的函数,例如内部循环。
Scikit-learn有很好的算法优先选择,可用作进行分类,重回,控制点,降维,微积分模型优先选择和预处理。它具有良好的文档和所有这些的示例,但缺乏任何类型的指导工作流程来完成这些任务。
Scikit-learn在易于合作开发方面获得了最高分,主要原因在于算法都按照文档记录,API一致且设计良好,统计数据结构之间几乎没有“阻抗不匹配”。很高兴与两个图书馆合作,该图书馆的功能已经彻底充实,因此其漏洞已被彻底清除。
另一方面,图书馆不主要包括广度自学或强化自学,这省去了当前困难但重要的问题,例如准确的图像进行分类和可靠的实时词汇解析和译者。显然,假如你对广度自学感兴趣,你应该去别处看看。
然而,存在许多问题 – 从建立连接不同观察的预测功能,到进行分类观察,到自学未标记统计数据集的结构 – 这些都适用作单纯的旧机器自学而不须要几十层突触,以及这些区域Scikit-learn确实非常好。
Spark MLlib
Spark MLlib是Apache Spark的开源机器自学库,提供常见的机器自学算法,如进行分类,重回,控制点和协同过滤(但并非广度微积分微积分模型)。它还主要包括用作特征提取,转换,降维和优先选择的工具; 用作构筑,评估和调整机器自学流程的工具; 用作保存和加载算法,微积分模型和流水线,用作统计数据处理以及用作执行线性代数和统计的实用程序。
Spark MLlib是用Scala编写的,并使用线性代数包Breeze。Breeze依赖于netlib-java进行优化的数值处理,尽管在开源分发中意味着优化了CPU的使用。Databricks提供使用GPU的定制Spark集群,能为您提供另外10倍的速率提升,以专业培训具有大统计数据的复杂机器自学微积分模型。
Spark MLlib实现了大量用作进行分类和重回的常用算法和微积分模型,以至于新手可能会深感疑惑,但专家可能最终会为要分析的统计数据找到两个很好的微积分模型优先选择。对于过多的微积分模型,Spark 2.x增加了超参数调整的重要特征,也称为微积分模型优先选择。超参数调整允许分析人员设置参数网格,估计器和评估器,并让交叉验证方式(耗时但准确)或列车验证拆分方式(更慢但不太准确)找到最佳微积分模型统计数据。
Spark MLlib拥有适用作Scala和Java的完整API,主要是用作Python的完整API,以及用作R的粗略部分API。通过排序样本能很好地了解覆盖范围:54 Java和60 Scala机器自学示例,52 Python机器自学例子,只有五个R例子。根据我的经验,Spark MLlib最容易使用Jupyter笔记本,但假如你驯服详细的Spark状态消息,你当然能在控制台中运转它。
Spark MLlib提供了基本的机器自学,功能优先选择,流水线和持久性方面的任何你想要的东西。它在进行分类,重回,控制点和过滤方面表现相当极好。鉴于它是Spark的一部分,它能很好地访问统计数据库,流和其他统计数据源。另一方面,Spark MLlib并没有像TensorFlow,PyTorch,MXNet和Keras一样建立和体能训练广度微积分微积分模型。
TensorFlow
TensorFlow可能是广度微积分微积分模型合作开发的黄金标准,尽管它并非没有缺陷。TensorFlow历史上最大的两个问题是,它太难学,而且创建微积分模型须要太多代码。这两个问题在过去几年都得到了解决。
为了使TensorFlow更易于自学,TensorFlow项目组已经制作了更多的自学资料,并阐明了现有的“入门”教程。许多第三方已经制作了自己的教程材料(主要包括InfoWorld)。现在有多本TensorFlow书籍和几本在线TensorFlow专业课程。您甚至能参加斯坦福大学的CS20专业课程,TensorFlow for Deep Learning Research,该专业课程在线发布所有幻灯片和讲义。
TensorFlow库有几个捷伊部分,它们提供的接口须要较少的编程来创建和体能训练微积分模型。其中主要包括tf.keras,它提供了TensorFlow版本的其他引擎中立的Keras软件包,并tf.estimator提供了许多用作处理微积分模型的高阶设施。这些主要包括线性,广度微积分微积分模型的重回量和进行分类器,以及线性和广度微积分微积分模型的组合,以及能构筑自己的估算器的基类。此外,Dataset API使您能够从单纯,可重用的部分构筑复杂的输入管道。您不必只优先选择两个。作为本教程显示,能有效地使tf.keras,tf.data.dataset和tf.estimator共同努力。
TensorFlow Lite是TensorFlow针对移动和嵌入式设备的轻量级解决方案,可实现低延迟和小二进制大小的设备内机器自学推理(但并非专业培训)。TensorFlow Lite还支持Android脊髓网络API的硬件加速。TensorFlow Lite微积分模型足够小,能在移动设备上运转,并能为离线用例提供服务。
TensorFlow Lite的基本思想是体能训练两个完整的TensorFlow微积分模型并将其转换为TensorFlow Lite微积分模型格式。然后,您能在Android或iOS上的移动应用程序中使用转换后的文件。
或者,您能使用其中两个预先体能训练过的T
另一种优先选择是针对捷伊标记数据集重新体能训练现有的TensorFlow微积分模型,这是一种称为转移自学的重要技术,可显着缩短体能训练天数。关于此过程的实践教程称为TensorFlow for Poets。
机器自学还是广度自学?
有时您知道您须要两个广度微积分微积分模型来有效地解决特定问题,例如对图像进行进行分类,识别语音或译者词汇。其他时候,您不知道是否有必要,例如预测下个月的销售统计数据或检验统计数据中的极度值。
假如你确实须要两个广度微积分微积分模型,那么Keras,MXNet与Gluon,PyTorch和TensorFlow与Keras或Estimators都是极好的优先选择。假如你不确定,那么先从Scikit-learn或Spark MLlib开始,然后尝试所有相关的算法。假如您从最佳微积分模型或数个微积分模型的集合中获得满意的结果,则能停止。
假如您须要更好的结果,那么尝试在体能训练有素的深层微积分微积分模型上进行转移自学。假如您仍然无法获得所需,请尝试从头开始构筑和体能训练广度脊髓网络。要优化微积分模型,请尝试超参数调整。
无论您使用何种方式体能训练微积分模型,请记住微积分模型仅与您用作体能训练的统计数据一样好。记得清理它,使其标准化,并平衡体能训练专业课程的大小。