深度学习在MATLAB
什么是深度学习?
深度学习是机器学习的一个分支,它教会计算机做人类与生俱来的事情:从经验中学习。深度学习使用神经网络直接从数据中学习有用的特征表示。神经网络结合了多个非线性处理层,使用简单的元素并行运行,并受到生物神经系统的启发。深度学习模型可以在对象分类中达到最先进的精确度,有时甚至超过人类水平。
深度学习工具箱™提供简单的MATLAB®用于创建和连接深度神经网络层的命令。示例和预先训练的网络使使用MATLAB进行深度学习变得容易,即使不了解先进的计算机视觉算法或神经网络。
有关实用深度学习方法的免费实践介绍,请参见深度学习斜坡弯道.要快速开始深度学习,请参见在10行MATLAB代码中尝试深度学习.
使用迁移学习快速启动深度学习
迁移学习是深度学习应用中常用的一种方法。你可以把一个预先训练好的网络作为学习新任务的起点。使用迁移学习对网络进行微调比从零开始训练要快得多,也容易得多。您可以使用较少的训练图像快速地让网络学习新任务。迁移学习的优点是,预先训练的网络已经学习了一组丰富的特征,可以应用到其他类似任务的广泛范围。有关交互式示例,请参见基于深度网络设计器的迁移学习.有关程序示例,请参见训练深度学习网络对新图像进行分类.
要选择是使用预先训练的网络还是创建新的深度网络,请考虑下表中的场景。
使用预训练的网络进行迁移学习 | 创建一个新的深度网络 | |
---|---|---|
训练数据 | 数百到数千个标记数据(小) | 成千上万的标记数据 |
计算 | 中等计算(可选GPU) | 计算密集型(需要GPU来提高速度) |
培训时间 | 秒到几分钟 | 几天到几周的真正问题 |
模型的准确性 | 很好,这取决于预先训练的模型 | 高,但对小数据集可能过拟合 |
要探索预先训练的网络的选择,请使用深层网络设计师.
深度学习工作流程
要了解更多关于深度学习应用领域的信息,请参见深度学习的应用.
域 | 示例工作流 | 了解更多 | |
---|---|---|---|
图像分类、回归和处理 |
|
将深度学习应用于图像数据任务。 例如,使用深度学习对图像进行分类和回归。 |
|
序列和时间序列 |
|
将深度学习应用于序列和时间序列任务。 例如,使用深度学习进行序列分类和时间序列预测。 |
|
计算机视觉 |
|
将深度学习应用于计算机视觉应用。 例如,使用深度学习进行语义分割和对象检测。 |
开始使用深度学习进行语义分割(计算机视觉工具箱) 识别,对象检测和语义分割(计算机视觉工具箱) |
音频处理 |
|
将深度学习应用于音频和语音处理应用。 例如,将深度学习用于说话人识别、语音命令识别和声学场景识别。 |
音频应用的深度学习(音频工具箱) |
自动驾驶 |
|
将深度学习应用于自动驾驶应用。 例如,使用深度学习进行车辆检测和语义分割。 |
|
信号处理 |
|
将深度学习应用于信号处理应用。 例如,利用深度学习进行波形分割、信号分类、语音信号去噪等。 |
|
无线通信 |
|
将深度学习应用于无线通信系统。 例如,将深度学习用于定位、频谱感知、自动编码器设计和数字预失真(DPD)。 |
基于802.11az指纹和深度学习的三维室内定位(WLAN工具箱) |
强化学习 |
|
通过与未知动态环境的交互,训练深度神经网络代理。 例如,使用强化学习来训练策略,以实现资源分配、机器人和自主系统等复杂应用的控制器和决策算法。 |
|
计算金融 |
|
将深度学习应用于财务工作流程。 例如,在工具定价、交易和风险管理等应用中使用深度学习。 |
|
激光雷达处理 |
|
应用深度学习算法处理激光雷达点云数据。 例如,利用深度学习进行语义分割,对三维组织的激光雷达点云数据进行目标检测。 |
|
文本分析 |
|
将深度学习算法应用于文本分析应用。 例如,使用深度学习进行文本分类、语言翻译和文本生成。 |
|
预见性维护 |
|
将深度学习应用于预测性维护应用。 例如,使用深度学习进行故障检测和剩余使用寿命估计。 |
深度学习的应用
处理数据,可视化和训练网络,跟踪实验,并使用应用程序交互量化网络。
你可以在训练前使用应用程序对数据进行处理,以标记地面真相数据。有关选择标签应用程序的更多信息,请参见选择一个应用程序来标记地面真相数据.
的名字 | 描述 | 了解更多 | |
---|---|---|---|
深层网络设计师 |
|
构建、可视化、编辑和训练深度学习网络。 | |
实验管理器 |
|
创建深度学习实验,在多个初始条件下训练网络,并比较结果。 | |
深层网络量化器 |
|
通过量化权值、偏差和卷积层的激活到8位缩放整数数据类型,减少深度神经网络的内存需求。 | |
强化学习设计(强化学习工具箱) |
|
设计、训练和模拟强化学习代理。 | 使用强化学习设计器设计和训练代理(强化学习工具箱) |
图片标志(计算机视觉工具箱) |
|
在图像集合中标记地面真相数据。 | 开始使用图像标签(计算机视觉工具箱) |
贴标签机视频(计算机视觉工具箱) |
|
在视频、图像序列或自定义数据源阅读器中标记地面真相数据。 | 开始使用视频标签(计算机视觉工具箱) |
地面实况贴标签机(自动驾驶工具箱) |
|
在多个视频、图像序列或激光雷达点云中标记地面真相数据。 | 从基本事实标签开始(自动驾驶工具箱) |
激光雷达贴标签机(激光雷达工具箱) |
|
在点云或点云序列中标记对象。该应用程序从PLY, PCAP, LAS, LAZ, ROS和PCD文件读取点云数据。 | 开始使用激光雷达标签(激光雷达工具箱) |
信号贴标签机(信号处理工具箱) |
|
标记信号,用于分析或用于机器学习和深度学习应用。 | 使用信号标签应用程序(信号处理工具箱) |
使用从预训练网络中提取的特征的训练分类器
特征提取允许您使用预先训练的网络的功能,而无需在训练上投入时间和精力。特征提取可能是使用深度学习最快的方式。您可以从预先训练的网络中提取学到的特征,并使用这些特征来训练分类器,例如,支持向量机(SVM -需要统计和机器学习工具箱™)。例如,如果一个支持向量机训练使用alexnet
可以在训练和验证集上实现>90%的准确性,那么使用迁移学习进行微调可能不值得为获得额外的准确性而付出努力。如果您在一个小数据集上执行微调,那么您也有过拟合的风险。如果SVM不能为您的应用程序实现足够好的精度,那么就值得进行微调以寻求更高的精度。
示例请参见利用预训练网络提取图像特征.
深度学习与大数据在cpu、gpu、并行和云端
训练深度网络需要大量的计算,可能需要数小时的计算时间;然而,神经网络本质上是并行算法。您可以使用并行计算工具箱™通过使用高性能gpu和计算机集群并行运行来利用这种并行性。要了解更多关于并行、云端或使用GPU的深度学习的信息,请参见在并行、gpu和云上扩展深度学习.
在MATLAB数据存储®是处理和表示数据集合的一种方便方法,这些数据集合太大,一次无法装入内存。要了解关于大型数据集深度学习的更多信息,请参见大数据深度学习.
使用Simulink的深度学习
在Simulink中实现深度学习功能®通过使用深度学习工具箱™中包含的深度神经网络块库中的块,或通过使用计算机视觉工具箱™中包含的分析与增强块库中的深度学习对象检测器块来建模。
有关更多信息,请参见用Simulink进行深度学习.
深度学习可解释性
深度学习网络通常被描述为“黑盒子”,因为网络做出某个决定的原因并不总是显而易见的。您可以使用可解释性技术将网络行为转换为人们可以解释的输出。这个可解释的输出可以回答关于网络预测的问题。
深度学习工具箱提供了几种深度学习可视化方法,以帮助您调查和理解网络行为。例如,gradCAM
,occlusionSensitivity
,imageLIME
.有关更多信息,请参见深度学习可视化方法.
深度学习定制
您可以以各种方式训练和定制一个深度学习模型。例如,您可以使用内置层或定义自定义层来构建网络。然后你可以使用内置的训练功能来训练你的网络trainNetwork
或者将深度学习模型定义为函数,并使用自定义训练循环。为了帮助决定使用哪种方法,请参考下表。
方法 | 用例 | 了解更多 |
---|---|---|
内置培训和层次 | 适合大多数深度学习任务。 | |
自定义图层 | 如果“深度学习工具箱”没有提供任务所需的层,则可以创建自定义层。 | |
自定义训练循环 | 如果您需要额外的定制,您可以使用定制的训练循环来构建和训练您的网络。 |
有关更多信息,请参见在MATLAB中训练深度学习模型.
深度学习导入和导出
您可以从TensorFlow™2、TensorFlow- keras、PyTorch导入网络和层图®,以及ONNX™(开放神经网络交换)模型格式。您还可以将深度学习工具箱网络和层图导出到TensorFlow 2和ONNX模型格式。
导入功能
外部深度学习平台和模型格式 | 作为网络的导入模型 | 导入模型作为层图 |
---|---|---|
TensorFlow网络SavedModel 格式 |
importTensorFlowNetwork |
importTensorFlowLayers |
TensorFlow-Keras网络的HDF5或JSON格式 | importKerasNetwork |
importKerasLayers |
追踪PyTorch模型.pt 文件 |
importNetworkFromPyTorch |
不适用 |
ONNX模型格式的网络 | importONNXNetwork |
importONNXLayers |
的importTensorFlowNetwork
而且importTensorFlowLayers
函数推荐importKerasNetwork
而且importKerasLayers
功能。有关更多信息,请参见导入张量流模型的推荐函数.
的importTensorFlowNetwork
,importTensorFlowLayers
,importNetworkFromPyTorch
,importONNXNetwork
,importONNXLayers
当您导入带有TensorFlow层、PyTorch层或ONNX操作符的模型时,函数会创建自动生成的自定义层,这些函数不能转换为内置的MATLAB层。函数将自动生成的自定义层保存到当前文件夹中的一个包中。有关更多信息,请参见自动生成自定义层.
导出功能
导出网络或层图 | 外部深度学习平台和模型格式 |
---|---|
exportNetworkToTensorFlow |
Python中的TensorFlow 2模型®包 |
exportONNXNetwork |
ONNX模型格式 |
的exportNetworkToTensorFlow
函数将深度学习工具箱网络或层图保存为Python包中的TensorFlow模型。有关如何加载导出模型并将其保存为标准TensorFlow格式的更多信息,请参见负载导出张量流模型而且将导出的TensorFlow模型保存为标准格式.
通过使用ONNX作为中间格式,您可以与其他支持ONNX模型导出或导入的深度学习框架进行互操作。