Main Content

MATLAB 中进行深度学习

什么是深度学习?

深度学习是机器学习的一个分支,它训练计算机像人类一样自然地做事情,即:从经验中学习。深度学习使用神经网络直接从数据中学习有用的特征表示。神经网络结合了多个非线性处理层,它使用并行运行的简单元素并受到生物神经系统的启发。深度学习模型在对象分类方面可以达到非常高的准确度,有时甚至超过人类的水平。

Deep Learning Toolbox™ 提供简单的 MATLAB® 命令来创建和互连深度神经网络的各个层。示例和预训练网络使得使用 MATLAB 进行深度学习变得很容易,即使没有高级计算机视觉算法或神经网络方面的知识也不会感觉困难。

有关实际深度学习方法的免费实践课程,请参阅深度学习入门之旅。要快速开始深度学习,请参阅使用 10 行 MATLAB 代码尝试深度学习

使用迁移学习更快地开始深度学习

深度学习应用中常常用到迁移学习。您可以采用预训练的网络,基于它学习新任务。用迁移学习来微调网络比从头开始训练要快得多,也容易得多。您可以使用较少数量的训练图像快速让网络学习新任务。迁移学习的优势在于,预训练网络已学习一系列丰富的特征,这些特征可以应用于其他各种类似任务。有关交互方式的示例,请参阅使用深度网络设计器进行迁移学习。有关编程方式的示例,请参阅训练深度学习网络以对新图像进行分类

要选择是使用预训练网络还是创建新的深度网络,请参考下表中的情形。

 使用预训练网络进行迁移学习创建新的深度网络
训练数据数百到数千个已标注数据(小)数千到数百万个已标注数据
计算量中等计算量(可选择使用 GPU)计算量大(需要使用 GPU 来提高速度)
训练时间数秒到数分钟解决真实问题需要几天到几周的时间
模型准确度好,取决于预训练模型高,但对于较小的数据集,可能会出现过拟合的情况

要探查一系列预训练网络,请使用深度网络设计器

深度学习工作流

要了解有关深度学习应用领域的更多信息,请参阅应用

领域示例工作流了解更多信息

图像分类、回归和处理

Image data example

将深度学习应用于图像数据任务。

例如,使用深度学习进行图像分类和回归。

迁移学习快速入门

预训练的深度神经网络

创建简单的深度学习神经网络以用于分类

针对回归训练卷积神经网络

预处理图像以进行深度学习

序列和时间序列

Time series data example

将深度学习应用于序列和时间序列任务。

例如,使用深度学习进行序列分类和时间序列预测。

使用深度学习进行序列分类

使用深度学习进行时间序列预测

计算机视觉

Semantic segmentation data example

将深度学习应用于计算机视觉应用。

例如,使用深度学习进行语义分割和目标检测。

Getting Started with Semantic Segmentation Using Deep Learning (Computer Vision Toolbox)

Recognition, Object Detection, and Semantic Segmentation (Computer Vision Toolbox)

音频处理

Audio data example

将深度学习应用于音频和语音处理应用。

例如,将深度学习用于说话者识别、语音命令识别和声学场景识别。

音频处理

Deep Learning for Audio Applications (Audio Toolbox)

自动驾驶

Automated driving data example

将深度学习应用于自动驾驶应用。

例如,使用深度学习进行车辆检测和语义分割。

自动驾驶

训练深度学习车辆检测器

信号处理

Signal processing data example

将深度学习应用于信号处理应用。

例如,使用深度学习进行波形分割、信号分类以及语音信号去噪等。

信号处理

使用小波分析和深度学习对时间序列分类

无线通信

Wireless communications data example

将深度学习应用于无线通信系统。

例如,将深度学习用于定位、频谱感知、自编码器设计和数字预失真 (DPD)。

无线通信

Spectrum Sensing with Deep Learning to Identify 5G and LTE Signals

Three-Dimensional Indoor Positioning with 802.11az Fingerprinting and Deep Learning (WLAN Toolbox)

增强学习

Reinforcement learning data example

通过与未知动态环境交互来训练深度神经网络智能体。

例如,使用强化学习来训练策略,可以为复杂应用(如资源分配、机器人和自主系统)实现控制器和决策算法。

增强学习

计算金融

Computational finance data example

将深度学习应用于金融工作流。

例如,将深度学习用于包括产品定价、交易和风险管理在内的应用。

计算金融

Compare Deep Learning Networks for Credit Default Prediction

激光雷达处理

Lidar processing data example

应用深度学习算法处理激光雷达点云数据。

例如,使用深度学习进行语义分割,或对以三维形式组织的激光雷达点云数据进行目标检测。

激光雷达处理

Aerial Lidar Semantic Segmentation Using PointNet++ Deep Learning

Lidar 3-D Object Detection Using PointPillars Deep Learning

文本分析

Text analytics data example

将深度学习算法应用于文本分析应用。

例如,将深度学习用于文本分类、语言翻译和文本生成。

文本分析

使用深度学习对文本数据进行分类

预测性维护

Predictive maintenance data example

将深度学习应用于预测性维护应用。

例如,使用深度学习进行故障检测和剩余使用寿命估计。

预测性维护

Chemical Process Fault Detection Using Deep Learning

深度学习 App

使用各种 App,以交互方式处理数据、可视化和训练网络、跟踪试验以及量化网络。

您可以在训练前使用 App 标注真实值数据来处理您的数据。有关选择标注 App 的详细信息,请参阅Choose an App to Label Ground Truth Data

名称描述了解更多信息
深度网络设计器

Deep Network Designer

构建、可视化、编辑和训练深度学习网络。

使用深度网络设计器进行迁移学习

使用深度网络设计器训练网络以进行时间序列预测

试验管理器

Experiment Manager

创建深度学习试验,在多个初始条件下训练网络,并比较结果。

Create a Deep Learning Experiment for Classification

Create a Deep Learning Experiment for Regression

深度网络量化器

Deep Network Quantizer

通过将卷积层的权重、偏置和激活量化为 8 位定标整数数据类型,降低深度神经网络的内存要求。

Quantization of Deep Neural Networks

强化学习设计器 (Reinforcement Learning Toolbox)

Reinforcement Learning Designer

设计、训练和仿真强化学习智能体。Design and Train Agent Using Reinforcement Learning Designer (Reinforcement Learning Toolbox)
图像标注器 (Computer Vision Toolbox)

Image Labeler

标注图像集合中的真实值数据。

Get Started with the Image Labeler (Computer Vision Toolbox)

视频标注器 (Computer Vision Toolbox)

Video Labeler

标注视频、图像序列或自定义数据源读取器中的真实值数据。

Get Started with the Video Labeler (Computer Vision Toolbox)

真实值标注器 (Automated Driving Toolbox)

Ground Truth Labeler

标注多个视频、图像序列或激光雷达点云中的真实值数据。

Get Started with Ground Truth Labelling (Automated Driving Toolbox)

激光雷达标注器 (Lidar Toolbox)

Lidar Labeler

标注点云或点云序列中的目标。该 App 从 PLY、PCAP、LAS、LAZ、ROS 和 PCD 文件读取点云数据。

Get Started with the Lidar Labeler (Lidar Toolbox)

信号标注器 (Signal Processing Toolbox)

Signal Labeler

标注信号以用于分析或用于机器学习和深度学习应用。

Using Signal Labeler App (Signal Processing Toolbox)

使用从预训练网络中提取的特征训练分类器

特征提取让您可以利用预训练网络的强大功能,而无需在训练方面投入时间和精力。特征提取可能是使用深度学习的最快方法。您从预训练网络中提取学习到的特征,并使用这些特征来训练分类器,例如,支持向量机(SVM - 需要 Statistics and Machine Learning Toolbox™)。例如,如果使用 alexnet 训练过的 SVM 能够基于您的训练集和验证集达到 90% 以上的准确度,则可能不值得为再提高一点准确度而通过迁移学习进行微调。如果您对较小的数据集进行微调,可能还存在过拟合的风险。如果 SVM 无法达到对您的应用来说足够好的准确度,您可以通过微调来提高准确度。

有关示例,请参阅使用预训练网络提取图像特征

在并行运行的 CPU、GPU 上和云上使用大数据进行深度学习

训练深度网络属于计算密集型运算,并且可能花费数小时的计算时间;但神经网络本质上是并行算法。您可以使用 Parallel Computing Toolbox™,通过使用高性能 GPU 和计算机集群并行运行来利用这种并行机制。要了解有关并行、云中或使用 GPU 的深度学习的详细信息,请参阅Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud

Accelerating training in the cloud with Parallel Computing Toolbox.

使用 MATLAB® 中的数据存储,可以便捷地处理和表示太大而无法一次放入内存的数据集合。要了解有关使用大型数据集进行深度学习的详细信息,请参阅Deep Learning with Big Data

使用 Simulink 进行深度学习

通过使用 Deep Learning Toolbox™ 中包含的 Deep Neural Networks 模块库中的模块,或通过使用 Computer Vision Toolbox™ 中的 Analysis & Enhancement 模块库中的 Deep Learning Object Detector 模块,在 Simulink® 模型中实现深度学习功能。

有关详细信息,请参阅Simulink 深度学习

模块描述

Image Classifier

使用经过训练的深度学习神经网络对数据进行分类

Predict

使用经过训练的深度学习神经网络预测响应

Stateful Classify

使用经过训练的深度学习循环神经网络对数据进行分类

Stateful Predict

使用经过训练的循环神经网络预测响应

Deep Learning Object Detector (Computer Vision Toolbox)

使用经过训练的深度学习目标检测器检测目标

深度学习可解释性

深度学习网络经常被描述为“黑盒”,因为网络作出某种决策的原因并不始终是显而易见的。您可以使用可解释性方法将网络行为转换为人们可以理解的输出。这种可解释的输出可以回答关于网络预测的问题。

Deep Learning Toolbox 提供了几种深度学习可视化方法,可帮助您调查和理解网络行为。有关示例,请参阅 gradCAMocclusionSensitivityimageLIME。有关详细信息,请参阅Deep Learning Visualization Methods

Deep learning interpretability and visualization methods applied to an image of a dog.

深度学习自定义

您可以通过各种方法来训练和自定义深度学习模型。例如,您可以使用内置层来构建网络,或者定义自定义层。然后,您可以使用内置训练函数 trainnettrainNetwork 来训练您的网络,或将深度学习模型定义为函数并使用自定义训练循环。要帮助决定使用哪种方法,请参考下表。

方法用例了解更多信息
内置训练和层适用于大多数深度学习任务。

自定义层如果 Deep Learning Toolbox 没有提供您任务所需的层,则您可以创建一个自定义层。
自定义训练循环如果您需要额外的自定义,您可以使用自定义的训练循环来构建和训练您的网络。

有关详细信息,请参阅 Train Deep Learning Model in MATLAB

深度学习导入和导出

您可以从 TensorFlow™ 2、TensorFlow-Keras、PyTorch® 和 ONNX™(开放式神经网络交换)模型格式导入神经网络和层图。您还可以将 Deep Learning Toolbox 神经网络和层图导出为 TensorFlow 2 和 ONNX 模型格式。

导入函数

外部深度学习平台和模型格式将模型作为 dlnetwork 导入
SavedModel 格式的 TensorFlow 神经网络或 TensorFlow-Keras 神经网络importNetworkFromTensorFlow
.pt 文件格式的追溯的 PyTorch 模型importNetworkFromPyTorch
ONNX 模型格式的神经网络importNetworkFromONNX

如果一个模型具有函数 importNetworkFromTensorFlowimportNetworkFromPyTorchimportNetworkFromONNX 无法转换为内置 MATLAB 层的 TensorFlow 层、PyTorch 层或 ONNX 运算符,则当您导入该模型时,这些函数会创建自动生成的自定义层。这些函数将自动生成的自定义层保存到当前文件夹中的包中。有关详细信息,请参阅Autogenerated Custom Layers

导出函数

导出神经网络或层图外部深度学习平台和模型格式
exportNetworkToTensorFlowPython® 包中的 TensorFlow 2 模型
exportONNXNetworkONNX 模型格式

exportNetworkToTensorFlow 函数将 Deep Learning Toolbox 神经网络或层图作为 TensorFlow 模型保存在 Python 包中。有关如何加载导出的模型并将其保存为标准 TensorFlow 格式的详细信息,请参阅Load Exported TensorFlow ModelSave Exported TensorFlow Model in Standard Format

通过使用 ONNX 作为中间格式,您可以与支持 ONNX 模型导出或导入的其他深度学习框架进行互操作。

相关主题