MATLAB 2017b最新版是一款实用的数学软件。MATLAB 2017b官方版使用时只需更改少量代码就能扩展您的分析在群集、GPU 和云上运行。无需重写代码或学习大数据编程和内存溢出技术。MATLAB 2017b最新版增加了对复杂架构的支持,包括有向无环图(DAG)和长短期记忆(LSTM)网络,并提供对 GoogLeNet 等流行的预训练模型的访问。
基本简介
MathWorks推出了2017下半年的版本—MATLAB2017b(MATLAB R2017b),其中包括MATLAB和Simulink的若干新功能、六款新产品以及对其他86款产品的更新和修复补丁,该更新版本从数据标注、模型搭建、训练与推断还有最后的模型部署方面完整地支持深度学习开发流程。
其实,MATLAB2017b本次还有一大亮点是新组件“GPU Coder”,它能自动将深度学习模型代码转换为 NVIDIA GPU的CUDA代码,GPU Coder转换后的CUDA代码可以脱离MATLAB 境直接高效地执行推断。经 MATLAB内部基准测试显示,GPU Coder 产生的 CUDA 代码,比TensorFlow的性能高7倍,比Caffe2的性能高4.5倍。另外,此发行版还添加了新的重要的深度学习功能,可简化工程师、研究人员及其他领域专家设计、训练和部署模型的方式。
功能介绍
一、数百万工程师和科学家信赖 MATLAB
MATLAB 将适合迭代分析和设计过程的桌面环境与直接表达矩阵和数组运算的编程语言相结合。
1、专业开发
MATLAB 工具箱经过专业开发、严格测试并拥有完善的帮助文档。
2、包含交互式应用程序
MATLAB 应用程序让您看到不同的算法如何处理您的数据。在您获得所需结果之前反复迭代,然后自动生成 MATLAB 程序,以便对您的工作进行重现或自动处理。
3、以及扩展能力
只需更改少量代码就能扩展您的分析在群集、GPU 和云上运行。无需重写代码或学习大数据编程和内存溢出技术。
二、让您的创意从研究迈向生产
·Deploy to Production Systems
·部署到企业应用程序
·MATLAB 代码可直接用于生产,因此您可以直接部署到云和企业系统,并与数据源和业务系统集成。
·Hardware
·在嵌入式设备上运行
·自动将 MATLAB 算法转换为 C/C++ 和 HDL 代码,从而在嵌入式设备上运行。
·Run on Embedded Devices
·与基于模型的设计集成
·MATLAB 与 Simulink 配合以支持基于模型的设计,用于多域仿真、自动生成代码,以及嵌入式系统的测试和验证。
软件特色
1、深度学习支持
R2017b中的具体深度学习特性、产品和功能包括:
· Neural Network Toolbox增加了对复杂架构的支持,包括有向无环图(DAG)和长短期记忆(LSTM)网络,并提供对 GoogLeNet 等流行的预训练模型的访问。
· Computer Vision System Toolbox中的Image Labeler应用现在提供一种方便和交互的方式来标记一系列图像中的地面实况数据。除对象检测工作流程外,该工具箱现在还利用深度学习支持语义分割、对图像中的像素区域进行分类,以及评估和可视化分割结果。
·新产品GPU Coder可自动将深度学习模型转换为NVIDIA GPU的CUDA代码。内部基准测试显示,在部署阶段为深度学习模型产生的代码,比TensorFlow的性能提高7倍,比Caffe2的性能提高4.5倍。
与R2017a推出的功能相结合,可以使用预训练模型进行迁移学习,包括卷积神经网络(CNN)模型(AlexNet、VGG-16 和 VGG-19)以及来自Caffe的模型(包括Caffe Model Zoo)。可以从头开始开发模型,包括使用CNN进行图像分类、对象检测、回归等。
“随着智能设备和物联网的发展,设计团队面临创造更加智能的产品和应用的挑战,他们需要自己掌握深度学习技能或依赖其他具有深度学习专长但可能不了解应用场景的团队,”MathWorks的MATLAB市场营销总监David Rich表示,“借助R2017b,工程和系统集成团队可以将MATLAB拓展用于深度学习,以更好地保持对整个设计过程的控制,并更快地实现更高质量的设计。他们可以使用预训练网络,协作开发代码和模型,然后部署到GPU和嵌入式设备。使用MATLAB可以改进结果质量,同时通过自动化地面实况标记App来缩短模型开发时间。” 2、其他更新:
除深度学习外,R2017b 还包括其他关键领域的一系列更新,包括:
·使用MATLAB进行数据分析
o一款新Text Analytics Toolbox 产品、可扩展数据存储、用于机器学习的更多大数据绘图和算法,以及 Microsoft Azure Blob 存储支持
·使用Simulink进行实时软件建模
o对用于软件环境的调度效果进行建模并实现可插入式组件
·使用 Simulink 进行验证和确认
o用于需求建模、测试覆盖率分析和合规性检查的新工具
2、数据标注
对于计算机视觉来说,Computer Vision System Toolbox 中的 Ground Truth Labeler app 可提供一种交互式的方法半自动地标注一系列图像。除了目标检测与定位外,该工具箱现在还支持语义分割,它能对图像中的像素区域进行分类。陈建平说:「我们现在的标注工具可以直接半自动地完成任务,它可以像 Photoshop 中的魔棒工具一样自动标注出像素层级的类别,我们选中图片后工具会自动将对象抠出来。在我们完成初始化的图像语义分割后,工具会使用自动化的手段把后续行驶过程中的其它元素都抠出来。因为中间和后续过程都是以机器为主导完成的,所以我们只需要在前期使用少量的人力就能完成整个标注过程。」
这种半自动方法确实可以大大提升标注的效率,特别是标注车道边界线和汽车边界框等视觉系统目标。在这种自动标注框架下,算法可以快速地完成整个数据集的标注,而随后我们只需要少量的监督与验证就能构建一个精确的数据集。如下所示,MATLAB 文档向我们展示了如何创建车道线自动标注。
3、模型构建
在模型构建方面,Neural Network Toolbox 增加了对复杂架构的支持,包括有向无环图(DAG)和长短期记忆(LSTM)网络等,并提供对 GoogLeNet 等流行的预训练模型的访问方式。陈建平表示:「其实 MATLAB 在 2016 年的时候就已经支持一些深度学习模型,而现在不仅支持 VGGNet 和 GoogleNet 等流行的预训练模型,同时还支持使用 Caffe Model Importer 直接从 Caffe 中导入。」
因为我们可以直接从 Caffe Model Zoo 中导入各种优秀与前沿的模型,所以 MATLAB 在模型方面可以提供广泛的支持。但直接从 Caffe 中导入模型又会产生一个疑惑,即如果我们在 Python 环境下使用 Caffe 构建了一个模型,那么导入 MATLAB 是不是需要转写代码,会不会需要做一些额外的工作以完成导入?对此,陈建平解答到:「假设我们使用 Python 和 Caffe 完成了一个模型,并保存以 Caffe 格式,那么 Caffe Model Importer 会直接从保存的 Caffe 格式中读取模型。在这个过程中,Caffe 并不需要为 MATLAB 做额外的工作,所有的转换结果都是 MATLAB 完成的。」
在导入模型后,我们可以直接使用类似于 Keras 的高级 API 修改模型或重建模型。下面将简要介绍如何导入预训练 AlexNet,并修改完成迁移学习。
首先我们需要导入 AlexNet,如果 Neural Network Toolbox 中没有安装 AlexNet,那么软件会提供下载地址。net =alexnet;net.Layers
上面的语句将导入 AlexNet,并如下所示展示整个 CNN 的神经网络架构。其中 MATLAB 会展示所有的操作层,每一层都给出了层级名、操作类型和层级参数等关键信息。例如第二个操作层『conv1』表示一个卷积运算,该运算采用了 96 个卷积核,每一个卷积核的尺寸为 11×11×3、步幅为 4,该卷积运算采用了padding。
这种描述不仅有利于我们了解整个神经网络的架构,同时还有助于调整架构以匹配特定的任务。由上可知最后的全连接层、softmax 层和分类输出层是与 ImageNet 任务相关联的配置,因此我们需要去除这三个层级并重新构建与当前任务相关联的层级。MATLAB 可以十分简洁地实现这一过程:layersTransfer =net.Layers(1:end-3);numClasses =numel(categories(trainingImages.Labels))layers =[layersTransferfullyConnectedLayer(numClasses,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20)softmaxLayerclassificationLayer];
由上面的代码可知我们只提取了 AlexNet 预训练模型的前 22 层,而后依次新建了全连接层、softmax 层和分类输出层。完成整个层级重构后,剩下的就只需使用以下代码训练新的模型。其中 trainingImages 为当前任务的训练样本、layers 为前面修正的层级,而 options 是我们设置的一组训练参数,包括优化算法、最小批量大小、初始化学习率、绘制训练过程和验证集配置等设定。
由上,我们发现 MATLAB 的深度学习代码非常简洁,调用高级 API 能快速完成模型的搭建。陈建平说:「MATLAB 上的高级 API 是一个完整的体系,它们完全是针对深度学习而设计的。当然我们还是会用基础的运算,因为 MATLAB 这么多年的累积可以充分体现在基础运算上,但是深度学习这一套高级 API 确实是新设计的。」
其实不只是 AlexNet,很多 Caffe 模型都能够导入到 MATLAB。那么,MATLAB 为什么会选择 Caffe 作为对接的深度学习框架,而不是近来十分流行的 TensorFlow?
4、训练与推断
对于模型训练来说,最重要的可能就是能支持大规模分布式训练。因为目前的深度模型都有非常多的参数和层级,每一次正向或反向传播都拥有海量的矩阵运算,所以这就要求 MATLAB 能高效地执行并行运算。当然,我们知道 MATLAB 在并行运算上有十分雄厚的累积,那么在硬件支持上,目前其支持 CPU 和 GPU 之间的自动选择、单块 GPU、本地或计算机集群上的多块 GPU。此外,由于近来采用大批量 SGD 进行分布式训练的方法取得了十分优秀的结果,我们可以使用 MATLAB 调用整个计算机集群上的 GPU,并使用层级对应的适应率缩放(Layer-wise Adaptive Rate Scaling/LARS)那样的技术快速完成整个模型的训练。
在模型训练中,另外一个比较重要的部分就是可视化,我们需要可视化整个训练过程中的模型准确度、训练损失、验证损失、收敛情况等信息。当然 MATLAB 一直以来就十分重视可视化,在上例执行迁移学习时,我们也能得到整个训练过程的可视化信息。如下所示,上部分为训练准确度和验证准确度随迭代数的变化趋势,下部分为训练损失和验证损失随迭代数的变化趋势,该迁移学习基本上到第 3 个 epoch 就已经收敛。
对于推断来说,新产品 GPU Coder 可自动将深度学习模型转换为 NVIDIA GPU 的 CUDA 代码。内部基准测试显示,GPU Coder 产生的 CUDA 代码,比 TensorFlow 的性能提高 7 倍,比 Caffe2 的性能提高 4.5 倍。
5、模型部署
在 MATLAB 部署模型其实也很简单,MATLAB 很早就支持生成独立于其开发环境的其它语言,比如利用 MATLAB Coder 可以将 MATLAB 代码转换为 C 或 C++代码。而该最新版提供了新的工具 GPU Coder,我们能利用它将生成的 CUDA 代码部署到 GPU 中并进行实时处理,这一点对于应用场景是极其重要的。
安装步骤
1.安装前请阅读注意事项,否则安装不成功!
2.右键R2017b_win64_dvd1.iso,点击装载
3.右键setup.exe,点击以管理员身份运行
4.选中“使用文件安装密钥”,点击下一步
5.选中“是”,点击【下一步】
6.输入安装密钥,点击【下一步】
7.自定义安装路径:点击浏览,在D盘新建文件夹Matlab2017(注意:安装路径文件夹名称均不能出现中文字符!) 选中点击下一步
8.取消选中第一条产品的勾选,点击【下一步】
9.选中“桌面”和“开始菜单”创建快捷方式,然后点击【下一步】
10.点击【安装】
11.安装进程中,耐心等待
12.安装进度条达56%时,弹出窗口提示:弹出DVD1并插入DVD2以继续,不要点击“确定”,操作如下
13.双击桌面“此电脑”图标进入文件资源管理界面,找到载虚拟光驱,右击选择【弹出】
14.返回初始Matlab 2017b安装包文件夹,右击R2017b_win64_dvd2.iso,点击【装载】
15.再点击确定,继续安装
16.点击下一步
17.安装完成