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