主要内容

深度学习技巧和窍门

本页面描述了各种训练选项和技术改善深度学习网络的准确性。

选择网络体系结构

适当的网络体系结构取决于任务和可用的数据。考虑这些建议在决定使用哪个架构以及是否使用pretrained网络或从头开始训练。

数据 任务的描述 了解更多
图片 自然图像的分类

尝试不同的pretrained网络。pretrained深入学习网络的列表,请参阅Pretrained深层神经网络

学习如何交互网络准备转移学习使用深层网络设计师,看看转移学习与深层网络设计师

回归自然的图像 尝试不同的pretrained网络。为一个例子,演示如何pretrained分类网络转换成一个回归网络,看到的分类网络转化为回归网络
分类和回归的非天然的图像(例如,图像和声音

为一个例子,演示如何分类小图片,明白了火车残余网络图像分类

为一个例子,演示如何分类谱图,看看语音命令识别使用深度学习

语义分割 计算机视觉工具箱™提供工具来创建深度学习网络语义分割。有关更多信息,请参见开始使用语义分割使用深度学习(计算机视觉工具箱)
序列、时间序列和信号 Sequence-to-label分类 例如,看到的使用深度学习序列分类
Sequence-to-sequence分类和回归 欲了解更多,请看使用深度学习Sequence-to-Sequence分类使用深度学习Sequence-to-Sequence回归
Sequence-to-one回归 例如,看到的使用深度学习Sequence-to-One回归
时间序列预测 例如,看到的使用深度学习时间序列预测
文本 分类和回归 文本分析工具箱™提供工具来创建深度学习网络文本数据。例如,看到的使用深度学习分类文本数据
文本生成 例如,看到的生成文本使用深度学习
音频 音频分类和回归

尝试不同的pretrained网络。pretrained深入学习网络的列表,请参阅Pretrained模型(音频工具箱)

学习如何以编程方式准备转移的网络学习,明白了学习与Pretrained音频网络传输(音频工具箱)。学习如何交互网络准备转移学习使用深层网络设计师,看看转移与Pretrained音频网络学习深陷网络设计师

为一个例子,演示如何使用深度学习分类的声音,看到的使用深度学习分类的声音(音频工具箱)

选择培训选项

trainingOptions函数提供了多种选项来训练你的深入学习网络。

提示 更多的信息
监控培训进展 打开培训发展情节,设置“阴谋”选项trainingOptions“训练进步”
使用验证数据

指定验证数据,使用“ValidationData”选项trainingOptions

请注意

如果您的验证数据集太小,不足够代表数据,然后报告指标可能不会帮助你。使用太大的验证数据集可能导致较慢的培训。

迁移学习,加快学习的新层和减缓学习的传输层

指定新层通过更高的学习速率的因素,例如,WeightLearnRateFactor的属性convolution2dLayer

减少最初的学习速率使用“InitialLearnRate”选择trainingOptions

当转移学习时,您不需要火车尽可能多的时代。减少时期使用的数量“MaxEpochs”选项trainingOptions

学习如何交互网络准备转移学习使用深层网络设计师,看看转移学习与深层网络设计师

洗你的数据每一时代

洗牌数据每一时代(一个完整的传递的数据),设置“洗牌”选项trainingOptions“every-epoch”

请注意

对于序列数据,洗牌可以产生负面影响的准确性,因为它可以增加填充或截断数据。如果你有序列数据,然后整理数据序列长度可以帮助。欲了解更多,请看序列填充、截断和分裂

尝试不同的优化

要指定不同的优化,使用solverName论点trainingOptions

有关更多信息,请参见设置参数和卷积神经网络训练

提高训练精度

如果你注意到在训练问题,然后再考虑这些可能的解决方案。万博 尤文图斯

问题 可能的解决方案
nan或大型的损失峰值

减少最初的学习速率使用“InitialLearnRate”选择trainingOptions

如果减少学习速率不能帮助,那么试着用梯度剪裁。设置梯度阈值,使用“GradientThreshold”选项trainingOptions

最后仍然是减少损失的训练 训练时间增加时代使用的数量“MaxEpochs”选项trainingOptions
损失高原

如果意外的损失高原高值,然后在高原的学习速率下降。改变学习速率调度,使用“LearnRateSchedule”选项trainingOptions

如果放弃学习速率不能帮助,那么这个模型可能underfitting。尝试增加参数的数量或层。你可以检查模型是否underfitting通过监测验证损失。

验证损失远远高于训练的损失

为了防止过度拟合,试试以下的一个或多个:

慢慢地减少损失

增加初始学习速率使用“InitialLearnRate”选择trainingOptions

对于图像数据,尝试包括批处理标准化网络层。有关更多信息,请参见batchNormalizationLayer

有关更多信息,请参见设置参数和卷积神经网络训练

修复错误的训练

如果你的网络没有火车,然后考虑可能的解决方案。万博 尤文图斯

错误 描述 可能的解决方案
内存不足错误当培训 可用的硬件无法存储当前mini-batch,网络权值,计算激活。

尝试减少mini-batch大小使用“MiniBatchSize”选择trainingOptions

如果减少mini-batch大小不工作,然后试着用一个小的网络,减少层数,或减少参数的个数或过滤层。

自定义层的错误 会有一个与自定义层的实现问题。

检查的有效性定义层和发现潜在的问题checkLayer

如果测试失败时使用checkLayer,那么功能提供了一个测试诊断和诊断框架。测试诊断强调任何层问题,而框架诊断提供更详细的信息。了解更多关于测试诊断和建议可能的解决方案,明白了万博 尤文图斯诊断

培训抛出错误“CUDA_ERROR_UNKNOWN” 有时,GPU抛出这个错误当它被用于计算和显示请求的操作系统。

尝试减少mini-batch大小使用“MiniBatchSize”选择trainingOptions

如果减少mini-batch大小不工作,然后在窗口®,试着调整超时检测和恢复(TDR)的设置。例如,改变TdrDelay从2秒(默认)到4秒(需要注册表编辑)。

你可以分析深度学习网络使用analyzeNetwork。的analyzeNetwork函数显示一个交互式可视化的网络体系结构、网络检测错误和问题,并提供了详细的网络层的信息。使用网络分析仪来想象和理解网络架构,检查您已经定义了结构正确,培训之前发现问题。的问题,analyzeNetwork检测包括失踪或断开连接层,不匹配或不正确的大小的输入层,层输入有误,无效的图结构。

准备和数据预处理

你可以通过数据预处理提高精度。

重量或平衡类

理想情况下,所有类都有一个相同数量的观察。然而,对于一些任务,类可以不平衡。例如,汽车的街景数据集往往有更多的天空,建筑,和道路比行人和骑自行车的像素像素,因为天空,建筑和道路覆盖更多的图像区域。如果不能正确处理,这种不平衡会对学习过程是不利的,因为学习是有偏见的主要类。

对于分类任务,您可以指定类权重使用“ClassWeights”选择classificationLayer。例如,看到的序列分类使用Inverse-Frequency类权重。对于语义分割任务,您可以指定类权重使用ClassWeights(计算机视觉工具箱)的属性pixelClassificationLayer(计算机视觉工具箱)

或者,你可以通过做一个或多个平衡类如下:

  • 从最频繁的类添加新的观测。

  • 将观察从最常见的类。

  • 组相似的类。例如,集团的类“车”和“卡车”到单独的类“车辆”。

图像数据进行预处理

关于预处理图像数据的更多信息,请参阅预处理图像深度学习

任务 更多的信息
调整图像

使用pretrained网络,必须调整图像的输入规模网络。调整图像,使用augmentedImageDatastore。例如,这个语法调整图像的图像数据存储洛桑国际管理发展学院:

auimds = augmentedImageDatastore (inputSize, imd);

提示

使用augmentedImageDatastore为深度学习有效的图像预处理,包括图像缩放。

不使用readFcn选择的imageDatastore函数预处理或调整,这个选项通常是明显慢。

图像增强

为了避免过度拟合,使用图像转换。欲了解更多,请看列车网络的增强图像

回归正常化的目标

正常化之前预测输入他们的网络。如果你规范化培训前的反应,那么你必须改变训练网络的预测得到预测的原始反应。

有关更多信息,请参见火车卷积神经网络回归

预处理序列数据

关于处理LSTM网络的更多信息,明白了长期短期记忆网络

任务 更多的信息
标准化序列数据

规范化序列数据,首先计算一个部分的所有序列的平均值和标准偏差。然后,对于每个训练观察,减去均值,再除以标准差。

欲了解更多,请看标准化序列数据

减少序列填充和截断

减少填充或丢弃的数据填充或删除序列时,试试排序数据序列长度。

欲了解更多,请看序列填充、截断和分裂

为预测指定mini-batch大小和填充选项

当你与不同长度的序列进行预测,mini-batch大小会影响填料添加到输入数据的数量,从而导致不同的预测值。尝试使用不同的值,看看哪种最与你的网络。

要指定mini-batch大小和填充选项,可以使用“MiniBatchSize”“SequenceLength”选项的分类,预测,classifyAndUpdateState,predictAndUpdateState功能。

使用可用的硬件

指定执行环境,使用“ExecutionEnvironment”选项trainingOptions

问题 更多的信息
培训的CPU是缓慢的 如果培训太慢了一个CPU,尝试使用pretrained深入学习网络作为特征提取器和训练一个机器学习模型。例如,看到的使用Pretrained网络提取图像特征
培训LSTM GPU是缓慢的

CPU更适合训练LSTM网络使用mini-batches短序列。使用CPU、设置“ExecutionEnvironment”选项trainingOptions“cpu”

软件不使用所有可用的gpu 如果你访问一个机器与多个gpu,简单的设置“ExecutionEnvironment”选项trainingOptions“multi-gpu”。有关更多信息,请参见深度学习与MATLAB在多个gpu

有关更多信息,请参见并行扩展深度学习,在gpu上,在云端

修复错误mat文件的加载

如果你不能从MAT-file负载层或网络,得到一个警告的形式

警告:无法加载类的实例layerType异构数组。layerType的定义可能缺失或包含一个错误。默认的对象将被取代。警告:当加载一个类的对象“SeriesNetwork”:使用“向前”层nnet.cnn.layer.MissingLayer错误。函数把一个错误,不能被执行。
然后MAT-file可能包含无效的网络层。这可能是由于以下几点:

  • 文件包含自定义层不包含自定义的路径——加载网络层,添加自定义图层文件以MATLAB®路径。

  • 文件包含自定义层的包——加载网络使用层支持包,安装所需的支持包在命令行通过使用相万博1manbetx应的功能(例如,resnet18)或使用附加Explorer。

  • 文件包含自定义层从一个文档的例子并不在包含自定义的路径——加载网络层从文档例子,打开示例作为生活脚本,将层从示例文件夹复制到你的工作目录。

  • 文件包含一层从工具箱,没有安装,访问层与其它工具箱,例如,计算机视觉工具箱或文本分析工具箱,安装相应的工具箱。

尝试提出解决方案后,重新加载MAT-file。万博 尤文图斯

另请参阅

|||

相关的话题