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

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

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

Train Network for Time Series Forecasting Using 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.

深度学习自定义

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

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

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

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

深度学习导入和导出

您可以从 TensorFlow™-Keras、TensorFlow 2、ONNX™(开放式神经网络交换)模型格式和 Caffe 导入网络和网络架构。您还可以将经过训练的网络导出为 ONNX 模型格式。

导入函数

外部深度学习平台和模型格式将模型作为网络导入将模型作为层次图导入
ONNX 模型格式的网络importONNXNetworkimportONNXLayers
采用保存的模型格式的 TensorFlow 网络importTensorFlowNetworkimportTensorFlowLayers
HDF5 或 JSON 格式的 TensorFlow-Keras 网络importKerasNetworkimportKerasLayers
Caffe 网络,架构位于 .prototxt 文件中,权重位于 .caffemodel 文件中importCaffeNetworkimportCaffeLayers

相对于 importKerasNetworkimportKerasLayers 函数,推荐使用 importTensorFlowNetworkimportTensorFlowLayers 函数:

  • importTensorFlowNetworkimportTensorFlowLayers 函数支持 TensorFlow 2。有关支持的 TensorFlow 版本的详细信息,请参阅Limitations。有关从 TensorFlow 1 迁移到 TensorFlow 2 的优势的详细信息,请参阅 https://www.tensorflow.org/guide/migrate

  • importTensorFlowNetworkimportTensorFlowLayers 函数支持保存的模型格式,而 importKerasNetworkimportKerasLayers 支持 HDF5 格式。TensorFlow 推荐保存的模型格式。在将您的 TensorFlow 网络导入 MATLAB 之前,请考虑将其转换为保存的模型格式。

  • 当您导入自定义 TensorFlow 层或当软件无法将 TensorFlow 层转换为等效的内置 MATLAB 层时,importTensorFlowNetworkimportTensorFlowLayers 函数可以自动生成自定义层。有关示例,请参阅Import TensorFlow Network with Autogenerated Custom Layers

当软件无法将 ONNX 运算符转换为等效的内置 MATLAB 层时,importONNXNetworkimportONNXLayers 函数也可以生成自定义层。有关示例,请参阅Import ONNX Network with Autogenerated Custom Layers。在极少数情况下,当 importONNXNetworkimportONNXLayers 无法将 ONNX 模型导入层中时,您可以使用 importONNXFunction 将模型作为函数导入。有关如何选择 ONNX 导入函数的详细信息,请参阅Select Function to Import ONNX Pretrained Network

通过使用 ONNX 作为中间格式,您可以与支持 ONNX 模型导出或导入的其他深度学习框架进行互操作,这些框架包括 TensorFlow、PyTorch、Caffe2、Microsoft® Cognitive Toolkit (CNTK)、Core ML 和 Apache MXNet™。使用 exportONNXNetwork 函数将经过训练的 Deep Learning Toolbox 网络或网络层次图导出为 ONNX 模型格式。

相关主题