评论:MXNet深度学习与Gluon结合

本文回顾了MXNet深度学习框架的发展历程,特别是Gluon高级API的引入,使其在代码简洁性、模型灵活性和高性能方面与Keras/TensorFlow及PyTorch并驾齐驱。Gluon的动态图构建能力和高性能特性使其成为深度学习研究的理想选择。
摘要由CSDN通过智能技术生成

当我在2016年回顾MXNet v0.7时,我觉得它是一个很有前途的深度学习框架,具有出色的可伸缩性(在GPU群集上几乎是线性的),良好的自动区分能力以及对CUDA GPU的最新支持。 我还认为它需要在其文档和教程上进行工作,并且在其模型动物园中需要更多示例。 另外,我希望看到MXNet的高级界面,我以为是Keras。

编辑选择奖徽标梅花 信息世界

自那时以来,已经取得了很大的进步。 MXNet于2017年初迁移到Apache Software Foundation的支持下,尽管它仍在“孵化” 1.3版,但感觉还不错。

[ TensorFlow机器学习入门 TensorFlow评论:最好的深度学习库变得更好 •查看最新版本的TensorFlow中的新增功能 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

虽然在MXNet后端上对Keras进行了研究 ,但不同的高级界面变得更加重要: Gluon 。 在合并Gluon之前,您可以在MXNet中编写简单的命令式代码或快速的符号代码,但不能同时编写两者。 随着胶子,你可以结合两者的优点,在某种程度上,与充满竞争KerasPyTorch

什么是MXNet的Gluon?

Gluon声称的优势包括简单的代码,灵活的建模,动态图和高性能:

  1. 简单,易于理解的代码 :Gluon提供了全套的即插即用神经网络构建块,包括预定义的层,优化器和初始化器。
  2. 灵活的命令式结构 :Gluon不需要严格定义神经网络模型,而是将训练算法和模型更紧密地结合在一起,以在开发过程中提供灵活性。
  3. 动态图 :Gluon使开发人员能够定义动态的神经网络模型,这意味着它们可以动态构建,具有任何结构,并且可以使用Python的任何本机控制流来构建。
  4. 高性能 :Gluon具有上述所有优点,而不会影响基础引擎提供的训练速度。

这四个项目以及大量扩展的模型示例使Gluon / MXNet与Keras / TensorFlow和PyTorch大致相等,从而简化了开发和培训速度。 您可以在Gluon主页上看到说明这些特性的Gluon代码示例,并在Gluon API概述页面上重复这些示例。

Gluon API包括用于神经网络层,递归神经网络,损失函数,数据集方法和视觉数据集的功能,模型动物园以及一组实验性贡献的神经网络方法。 您可以将Gluon与标准MXNet和NumPy模块(例如moduleautogradndarray以及Python控制流自由组合。

Gluon有很多用于构建模型的层可供选择,包括基础层(密集层,Dropout等),卷积层,池化层和激活层。 这些都是一个单线呼叫。 这些可以在其他网络容器(例如gluon.nn.Sequential()

可以使用hybridize()方法将HybridSequential网络缓存(转换为符号图)以实现高性能:

net = nn.HybridSequential()
with net.name_scope():
    net.add(nn.Dense(256, activation="relu"))
    net.add(nn.Dense(128, activation="relu"))
    net.add(nn.Dense(2))
net.hybridize()

注意Dense层方法可以将激活层名称作为参数的方式。 那是Gluon和Keras之间许多相似之处之一。

Sequential容器和HybridSequential容器均未记录为HybridSequential API的一部分。 通过搜索源代码树,我发现它们在cubacubator-mxnet / python / mxnet / gluon / nn / basic_layers.py中实现。

MXNet 1.3有哪些新功能?

MXNet v1.3包含一长串新功能,改进和错误修复。 重点包括能够混合RNN(递归神经网络)层以提高性能,新的和更新的预训练视觉模型,将模型导出到ONNX(开放神经网络交换)格式以及将Nvidia TensorRT集成到MXNet中以加速推理的功能。 。 此外,将英特尔MKL(算术内核库)集成到MXNet中,可以使包括卷积节点在内的密集操作的英特尔CPU的性能提高4倍。

MXNet社区也一直在密切关注质量检查和持续集成。 在采取的步骤中,包括将“ 深度学习:笔直的涂料 ”教程中的示例笔记本集成到夜间CI测试中。

轻松安装MXNet

如果您已经安装了带有Notedown的Python,MXNet和Jupyter笔记本,并且可以正常工作,则可以跳到下一部分。 否则,请继续。

在弄清楚这个可重现的顺序之前,我无法告诉您不同软件组件的旧版本引发了模糊的错误以及其他软件包的安装带来的问题。 这样,除了您自己的代码外,您不应遇到错误,也不应破坏您可能已安装的其他深度学习框架。

它是唯一可能的安装选项吗? 不,当然不。 在Amazon SageMaker中运行MXNet或在AWS上运行深度学习AMI甚至更加容易,其中已经安装了您所需的一切。

首先为您的平台安装最新版本的Python 3。 (我在使用python 2或更早版本的python 3运行MXNet时遇到了问题。)我建议从Python.org安装python 3。 如果您喜欢AnacondaMiniConda环境,则可以使用其中之一安装Python 3,并可以跳过Jupyter安装步骤。

验证您可以从命令行运行python3并报告最新版本。 在我2018年10月下旬的安装中, python3 -V返回Python 3.7.1; 您的版本可能会更高。

然后安装Jupyter 。 我用了点子 如果您安装了Anaconda(默认情况下安装Jupyter),则不需要此步骤。

python3 -m pip install --upgrade pip
python3 -m pip install jupyter

如果您从命令行运行jupyter notebook ,您应该会看到一个浏览器窗口打开,并且能够使用Python 3内核创建一个新笔记本。 关闭这两个窗口并停止笔记本服务器,通常是在命令行中按Ctrl-c两次。

现在按照Gluon 速成课程自述文件中的说明使用压缩包安装Notedown。 使用Notedown插件,Jupyter可以读取以markdown格式保存的笔记本,这对于速成班和深度学习:笔直涂料都非常有用。

pip install https://github.com/mli/notedown/tarball/master

通过运行带有Notedown的Jupyter进行烟雾测试:

jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager'

再次关闭任何网页并停止笔记本服务器。

现在,我们准备为MXNet创建虚拟环境 。 如果您是Anaconda用户,则可以使用conda创建虚拟环境 。 我使用本地Python3 venv工具 ,从我的主目录开始:

python3 -m venv envs/mxnet

现在激活虚拟环境并为您的平台安装MXNet 。 我选择了带有MKL(英特尔为其CPU的高性能库)的MXNet版本,就像我在Mac上一样(对于CUDA GPU没有MXNet二进制文件),但是如果您最近安装了在Linux上安装了CUDA的Nvidia GPU或Windows,您可以安装同时具有CUDA和MKL支持的MXNet版本。 在Bash shell上,虚拟环境中的MXNet安装如下:

source envs/mxnet/bin/activate
pip install mxnet-mkl

C外壳程序和Fish外壳程序中的激活略有不同,因为您可以直接运行激活脚本,而不必使用source 。 无论如何,关闭外壳程序后,只要想返回到此MXNet安装,就都需要激活环境。 如果您不在主目录中,则Bash激活命令将为:

source ~/envs/mxnet/bin/activate

通过运行Python 3并导入我们刚刚安装的MXNet库,在命令行中测试MXNet安装。 请注意,命令行上的(mxnet)前缀表示我们处于虚拟环境中。

(mxnet) Martins-Retina-MacBook:~ martinheller$ python3
Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 03:13:28)
[Clang 6.0 (clang-600.0.57)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import mxnet as mx
>>> from mxnet import nd
>>> nd.array(((1,2,3),(5,6,7)))

[[1. 2. 3.]
 [5. 6. 7.]]
<NDArray 2x3 @cpu(0)>
>>> ^D
(mxnet) Martins-Retina-MacBook:~ martinheller$

现在,我们准备在安装了MXNet的虚拟环境中使用Notedown在Jupyter笔记本中测试MXNet:

mxnet笔记本命令行 IDG

启动Jupyter笔记本的Bash shell输出。

mxnet启动python3内核 IDG

Jupyter笔记本初始网页,显示目录。 下拉右上角的“新建”菜单以选择一个内核。 我们需要Python3。添加下图所示的三行Python代码并运行该单元。

mxnet笔记本测试 IDG

在Jupyter笔记本中测试MXNet。 一切都如预期。

现在,您已经在Jupyter笔记本中测试了MXNet的安装,接下来可以进行下一步并更全面地测试Gluon。 浏览到GitHub上 的gluon -api / gluon -api存储库 ,并下载示例代码的Jupyter笔记本 。 转到下载笔记本的目录,如有必要,激活MXNet虚拟环境,运行Jupyter笔记本,打开示例并运行它。 完成培训可能需要一段时间。 如果一切顺利,您将看到类似以下的内容:

MXNET Gluon测试 IDG

这Jupyter笔记本是规范的测试胶子在MXNet。 它是使用Softmax交叉熵损失和随机梯度下降算法的用于MNIST数字识别的简单两层密集神经网络,多层感知器的实现。

Gluon和MXNet模块教程

MXNet现在有许多针对 Gluon和Module API 的教程 。 我已经提到了有关使用Gluon进行深度学习的长期课程,《 Deep Learning:The Straight Dope 》和简短的60分钟的Gluon Crash课程

另外,大约有30个针对Python的Gluon教程。 在Module API方面,大约有24个Python教程,5个Scala教程,2个C ++,9个R和Perl教程。

当我在今年9月审查Keras时,我说:“如果我今天开始一个新的深度学习项目,我很可能会与Keras进行研究。” 我对此不太确定。 对于CPU和GPU的深度学习研究,Gluon / MXNet几乎与Keras / TensorFlow一样好。

不利的一面是,与TensorFlow不同,MXNet当前缺乏对TPU或FPGA的支持,并且缺少与TensorFlow的TensorBoard等效的图形可视化功能。 此外,与Gluon / MXNet相比,Keras / TensorFlow具有更大的生态系统。

Keras可以比Gluon部署在更多的环境中,但是除了能够训练模型和TensorRT的计算机外,您还可以将Gluon模型部署到Android,iOS,Raspberry Pi和Nvidia Jetson设备上进行预测。 目前,Gluon和Keras都比仍处于beta状态的PyTorch更成熟。 PyTorch和Gluon都可以动态创建模型。 Keras目前不能。

最终,使用哪种深度学习框架的选择可能完全取决于您的特定要求或您所知道和喜欢的内容。 但是由于有了Gluon和其他重大改进(在文档,教程,模型等方面),MXNet可以像TensorFlow或PyTorch一样成为深度学习的理想选择。

From: https://www.infoworld.com/article/3318557/review-mxnet-deep-learning-shines-with-gluon.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值