主要内容

深入学习技巧

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

选择网络体系结构

适当的网络架构取决于任务和可用数据。在决定使用哪种架构以及是否使用佩带的网络或从头开始训练时,请考虑这些建议。

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

尝试不同的预训练网络。有关预培训深度学习网络的列表,请参阅普里德深度神经网络

要学习如何使用深度网络设计器交互式地准备一个用于迁移学习的网络,请参阅使用Deep Network Designer进行迁移学习

自然图像的回归 尝试不同的预训练网络。有关如何将预先训练的分类网络转换为回归网络的示例,请参见将分类网络转换为回归网络
非自然图像(如微小图像和光谱图)的分类和回归

例如,展示如何对微小图像进行分类,请参阅图像分类的训练残差网络

有关如何对光谱图进行分类的示例,请参见基于深度学习的语音指令识别

语义细分 计算机视觉工具箱™ 提供用于创建语义分段的深度学习网络的工具。有关详细信息,请参阅使用深度学习开始使用语义分割(计算机视觉工具箱)
序列,时间序列和信号 Sequence-to-label分类 例如,请参见基于深度学习的序列分类
序列间分类和回归 想要了解更多,请看使用深度学习的序列到序列分类使用深度学习的序列到序列回归
时间序列预测 例如,请参见使用深度学习的时间序列预测
文本 分类和回归 Text Analytics Toolbox™提供了为文本数据创建深度学习网络的工具。例如,请参见利用深度学习对文本数据进行分类
文本生成 例如,请参见使用深度学习生成文本
音频 音频分类与回归 例如,请参见基于深度学习的语音指令识别

选择培训选项

培训选项该功能提供多种选项来训练您的深度学习网络。

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

要指定验证数据,请使用'vightationdata'选项培训选项

请注意

如果验证数据集太小,不能充分表示数据,那么报告的度量标准可能对您没有帮助。使用过大的验证数据集会导致训练变慢。

对于转移学习,加快新层的学习并减慢转移层中的学习

为新层指定更高的学习率系数,例如使用WeightLearnRateFactor性质Convolution2Dlayer.

使用初始学习率降低“初始学习率”选择培训选项

转移学习时,您无需为尽可能多的时期培训。使用该减少时代的数量“MaxEpochs”选项培训选项

要学习如何使用深度网络设计器交互式地准备一个用于迁移学习的网络,请参阅使用Deep Network Designer进行迁移学习

每一个时代都要洗牌你的数据

每个时代(数据的一个完整的通过一次),将数据进行洗牌(数据),设置“洗牌”选项培训选项'每个时代'

请注意

对于序列数据,洗牌会对准确性产生负面影响,因为它会增加填充或截断数据的数量。如果您有序列数据,那么按序列长度对数据进行排序会有所帮助。要了解更多信息,请参阅序列填充、截断和拆分

尝试不同的优化器

要指定不同的优化器,请使用solvername.论点培训选项

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

提高培训准确性

如果你在训练中注意到问题,那么考虑这些可能的解决方案。金宝搏官方网站

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

使用初始学习率降低“初始学习率”选择培训选项

如果降低学习率没有帮助,那么尝试使用梯度剪辑。要设置渐变阈值,使用“梯度阈值”选项培训选项

训练结束时损失仍在减少 通过增加使用时代的数量,使列车运行时间更长“MaxEpochs”选项培训选项
损失高原

如果损失稳定在一个意外的高值,则在稳定时降低学习率。要更改学习速率计划,请使用'shownrateschedule'选项培训选项

如果降低学习速率没有帮助,那么模型可能是不合适的。尝试增加参数或层的数量。您可以通过监视验证损失来检查模型是否拟合不足。

验证损失远高于培训损失

为防止过度拟合,请尝试以下一项或多项:

损失减少得很慢

增加初始学习率使用“初始学习率”选择培训选项

对于图像数据,请尝试在网络中包含批量规范化层。有关详细信息,请参阅batchNormalizationLayer

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

修正训练中的错误

如果你的网络根本不训练,那么就考虑可能的解决方案。金宝搏官方网站

错误 描述 可能的解决方案
训练时出现内存不足错误 可用硬件无法存储当前的迷你批处理、网络权重和计算的激活。

尝试使用“MiniBatchSize”选择培训选项

如果减少百分比尺寸不起作用,则尝试使用较小的网络,减少图层的数量,或减少图层中的参数或滤波器的数量。

自定义层的错误 自定义层的实现可能存在问题。

检查自定义层的有效性,并发现潜在的问题使用检查层

如果在使用时测试失败检查层,该函数提供测试诊断和框架诊断。测试诊断突出显示任何层问题,而框架诊断提供了更详细的信息。要了解有关测试诊断的更多信息并获得可能的解决方案的建议,请参阅金宝搏官方网站诊断学

训练抛出错误'cuda_error_unknown' 有时,GPU在用于操作系统的计算和显示请求时会抛出此错误。

尝试使用“MiniBatchSize”选择培训选项

如果减小最小批处理大小不起作用,则在Windows中®,尝试调整超时检测和恢复(TDR)设置。例如,改变TdrDelay从2秒(默认)到4秒(需要注册表编辑)。

您可以使用深度学习网络分析分析网络.的分析网络功能显示网络体系结构的交互式可视化,检测网络错误和问题,并提供有关网络层的详细信息。在培训之前,请使用网络分析器可视化和理解网络体系结构,检查您是否正确定义了体系结构,并检测问题。问题分析网络检测包括缺失或断开的层、不匹配或不正确的层输入大小、不正确的层输入数量和无效的图结构。

准备和预处理数据

你可以通过对数据进行预处理来提高准确性。

重量或平衡类

理想情况下,所有类都有相同数量的观察。然而,对于某些任务,类可能是不平衡的。例如,与行人和骑自行车的人相比,街道场景的汽车数据集往往有更多的天空、建筑和道路像素,因为天空、建筑和道路覆盖了更多的图像区域。如果处理不当,这种不平衡会对学习过程造成不利影响,因为学习偏向于主导阶级。

对于分类任务,可以使用“类权重”选择classificationLayer.对于语义分割任务,您可以使用该组件指定类重量类别级别(计算机视觉工具箱)性质像素分类层(计算机视觉工具箱)

或者,您可以通过执行以下一项或多项来平衡类:

  • 从最不频繁的类中添加新的观察结果。

  • 从最常见的类别中删除观察。

  • 小组类似课程。例如,将类别“汽车”和“卡车”分组到单级“车辆”中。

图像数据进行预处理

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

任务 更多的信息
图像大小

若要使用预先训练的网络,必须将图像的大小调整为网络的输入大小。要调整图像大小,请使用增强图像数据存储.例如,该语法调整图像数据存储中的图像大小洛桑国际管理发展学院

auimds=增强的图像数据存储(inputSize,imds);

提示

增强图像数据存储用于深度学习的图像预处理,包括图像大小调整。

请勿使用readfcn.选择imageageAtastore.用于预处理或调整大小,因为此选项通常要慢得多。

图像增强

为了避免过拟合,使用图像变换。想要了解更多,请看用增强图像列车网络

标准化回归目标

在将预测器输入网络之前将其归一化。如果在训练前对响应进行归一化,则必须转换训练网络的预测,以获得原始响应的预测。

有关更多信息,请参见训练卷积神经网络用于回归

预处理序列数据

有关使用LSTM网络的更多信息,请参阅长短时记忆网络

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

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

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

减少序列填充和截断

为了减少填充或截断序列时填充或丢弃数据的量,请尝试按顺序对数据进行排序。

想要了解更多,请看序列填充、截断和拆分

为预测指定最小批量大小和填充选项

当用不同长度的序列进行预测时,迷你批量大小可以影响添加到的输入数据的填充量,这导致不同的预测值。尝试使用不同的值,以查看最适合您的网络。

要指定迷你批量大小和填充选项,请使用“MiniBatchSize”“SequenceLength”选项的分类预测分类与更新房地产, 和predictAndUpdateState职能。

使用可用的硬件

要指定执行环境,使用“执行环境”选项培训选项

问题 更多的信息
对CPU的培训很慢 如果单个CPU上的训练速度太慢,请尝试使用预训练的深度学习网络作为特征提取器,并训练机器学习模型。有关示例,请参见利用预训练网络提取图像特征
在GPU上训练LSTM很慢

CPU更适合使用具有短序列的迷你批次训练LSTM网络。要使用CPU,请设置“执行环境”选项培训选项“cpu”

软件不使用所有可用的图形处理器 如果您可以访问具有多个GPU的机器,只需设置“执行环境”选项培训选项“多gpu”.有关更多信息,请参见基于多gpu的MATLAB深度学习

有关更多信息,请参见在GPU和云中并行扩展深度学习

修复从mat文件加载的错误

如果您无法从MAT-file加载层或网络并得到表单的警告

警告:无法将类layerType的实例加载到异类数组中。layerType的定义可能丢失或包含错误。默认对象将被替换。警告:加载“SeriesNetwork”类的对象时:在层nnet.cnn.Layer.MissingLayer中使用“forward”时出错。函数抛出错误,无法执行。
然后,Mat文件中的网络可能包含不可用的图层。这可能是由于以下内容:

  • 该文件包含不在路径上的自定义图层 - 要加载包含自定义图层的网络,将自定义图层文件添加到MATLAB中®路径

  • 该文件包含来自支持包的自定义层-要使用来自支持包的层加载网络,请使用相应的函数在金宝app命令行安装所需的支持包(例如,resnet18)或者使用附加资源管理器。

  • 该文件包含一个来自文档示例的自定义层,但不在路径上。要加载包含文档示例自定义层的网络,将示例作为Live Script打开,并将该层从示例文件夹复制到工作目录。

  • 该文件包含从未安装的工具箱中的图层 - 从其他工具箱访问图层,例如计算机视觉工具箱或文本分析工具箱,安装相应的工具箱。

尝试建议的解决方案后,重新加载MAT文件。金宝搏官方网站

另见

|||

相关的话题