本页面描述了用于提高深度学习网络准确性的各种训练选项和技术。
适当的网络架构取决于任务和可用数据。在决定使用哪种架构以及是否使用佩带的网络或从头开始训练时,请考虑这些建议。
数据 | 任务描述 | 了解更多 |
---|---|---|
图片 | 自然图像的分类 | 尝试不同的预训练网络。有关普查的深度学习网络列表,请参阅普里德深度神经网络. 要了解如何使用Deep network Designer以交互方式为转移学习准备网络,请参阅用深网络设计师转移学习. |
自然图像的回归 | 尝试不同的预训练网络。有关如何将预先训练的分类网络转换为回归网络的示例,请参见将分类网络转换为回归网络. | |
非自然图像(如微小图像和光谱图)的分类和回归 | 例如,展示如何对微小图像进行分类,请参阅用于图像分类的训练残差网络. 有关展示如何对频谱图进行分类的示例,请参阅基于深度学习的语音指令识别. |
|
语义细分 | Computer Vision Toolbox™提供工具,以创建用于语义分割的深度学习网络。有关更多信息,请参见使用深度学习开始使用语义分割(计算机视觉工具箱). | |
序列,时间序列和信号 | Sequence-to-label分类 | 例如,请参见基于深度学习的序列分类. |
序列到序列分类和回归 | 想要了解更多,请看使用深度学习的顺序序列分类和使用深度学习的序列到序列回归. | |
时间序列预测 | 例如,请参见使用深度学习的时间序列预测. | |
文本 | 分类和回归 | Text Analytics Toolbox™提供了为文本数据创建深度学习网络的工具。例如,请参见使用深度学习对文本数据进行分类. |
文本生成 | 例如,请参见使用深度学习生成文本. | |
音频 | 音频分类与回归 | 例如,请参见基于深度学习的语音指令识别. |
的培训选项
功能提供了培训您的深度学习网络的各种选项。
提示 | 更多的信息 |
---|---|
监控培训进度 | 要打开培训进度情节,请设置“阴谋” 选项培训选项 来“训练进步” . |
使用验证数据 | 要指定验证数据,请使用 请注意 如果验证数据集太小,不能充分表示数据,那么报告的度量标准可能对您没有帮助。使用过大的验证数据集会导致训练变慢。 |
对于转移学习,加快新层的学习并减慢转移层中的学习 | 通过使用例如,通过使用例如,为新图层指定更高的学习率因子 使用初始学习率降低 转移学习时,您无需为尽可能多的时期培训。使用该减少时代的数量 要了解如何使用Deep network Designer以交互方式为转移学习准备网络,请参阅用深网络设计师转移学习. |
每个时代洗牌你的数据 | 每个时代(数据的一个完整的通过一次),将数据进行洗牌(数据),设置 请注意 对于序列数据,洗机可以对准确度产生负面影响,因为它可以增加填充或截断的数据量。如果您有序列数据,则按顺序长度对数据进行排序可以帮助。想要了解更多,请看序列填充,截断和分裂. |
尝试不同的优化器 | 要指定不同的优化器,请使用 |
有关更多信息,请参见设置参数和火车卷积神经网络.
如果您在培训期间注意到问题,请考虑这些可能的解决方案。金宝搏官方网站
问题 | 可能的解决方案 |
---|---|
损失中的NAN或大峰值 | 使用初始学习率降低 如果降低学习率没有帮助,那么尝试使用梯度剪辑。要设置渐变阈值,使用 |
训练结束时损失仍在减少 | 通过使用“MaxEpochs” 选项培训选项 . |
损失平稳 | 如果损失强韧处于意外高的价值,则会降低高原的学习率。要更改学习率计划,请使用 如果降低学习速率没有帮助,那么模型可能是不合适的。尝试增加参数或层的数量。您可以通过监视验证损失来检查模型是否拟合不足。 |
验证损失远高于培训损失 | 为防止过度拟合,请尝试以下一项或多项:
|
损失减少得非常缓慢 | 使用 对于图像数据,请尝试在网络中包括批量归一化层。有关更多信息,请参见 |
有关更多信息,请参见设置参数和火车卷积神经网络.
如果您的网络根本没有培训,则考虑可能的解决方案。金宝搏官方网站
错误 | 描述 | 可能的解决方案 |
---|---|---|
培训时内存失误 | 可用硬件无法存储当前的迷你批处理、网络权重和计算的激活。 | 尝试使用缩小批量尺寸 如果减少百分比尺寸不起作用,则尝试使用较小的网络,减少图层的数量,或减少图层中的参数或滤波器的数量。 |
自定义层的错误 | 自定义层的实现可能存在问题。 | 检查自定义层的有效性,并发现潜在的问题使用 如果在使用时测试失败 |
训练抛出错误'cuda_error_unknown' |
有时,GPU在从OS中用于计算和显示请求时抛出此错误。 | 尝试使用缩小批量尺寸 如果缩小迷你批量尺寸不起作用,则在Windows中®,尝试调整超时检测和恢复(TDR)设置。例如,改变 |
您可以使用深度学习网络分析分析
.的分析
功能显示网络架构的交互式可视化,检测到网络的错误和问题,并提供有关网络层的详细信息。使用网络分析器可视化和了解网络架构,检查您是否正确定义了架构,并在培训前检测问题。问题分析
检测包括缺失或断开的层、不匹配或不正确的层输入大小、不正确的层输入数量和无效的图结构。
您可以通过预处理数据来提高准确性。
理想情况下,所有类都有相同数量的观察。然而,对于某些任务,类可能是不平衡的。例如,与行人和骑自行车的人相比,街道场景的汽车数据集往往有更多的天空、建筑和道路像素,因为天空、建筑和道路覆盖了更多的图像区域。如果处理不当,这种不平衡会对学习过程造成不利影响,因为学习偏向于主导阶级。
有关分类任务,您可以使用该类别指定类重量'classweight'
选择classificationLayer
.对于语义分割任务,您可以使用该组件指定类重量类别级别
(计算机视觉工具箱)财产PixelclassificationLayer.
(计算机视觉工具箱).
或者,您可以通过执行以下一项或多项来平衡类:
从最少频繁的类中添加新的观察。
从最常见的类别中删除观察。
小组类似课程。例如,将类别“汽车”和“卡车”分组到单级“车辆”中。
有关预处理图像数据的更多信息,请参阅深度学习的图像预处理.
任务 | 更多的信息 |
---|---|
调整图像大小 | 若要使用预先训练的网络,必须将图像的大小调整为网络的输入大小。要调整图像大小,请使用 auimds = augmentedimagedataStore(Inputsize,IMDS); 提示 用 请勿使用 |
图像增强 | 为了避免过拟合,使用图像变换。想要了解更多,请看用增强图像列车网络. |
标准化回归目标 | 在将预测器输入网络之前将其归一化。如果在训练前对响应进行归一化,则必须转换训练网络的预测,以获得原始响应的预测。 有关更多信息,请参见用于回归的卷积神经网络训练. |
有关使用LSTM网络的更多信息,请参阅长短期内存网络.
任务 | 更多的信息 |
---|---|
标准化序列数据 | 为了归一化序列数据,首先计算所有序列的每个特征均值和标准偏差。然后,对于每个训练观察,从标准偏差减去平均值并除以。 想要了解更多,请看标准化序列数据. |
减少序列填充和截断 | 为了减少填充或截断序列时填充或丢弃数据的量,请尝试按顺序对数据进行排序。 想要了解更多,请看序列填充,截断和分裂. |
为预测指定迷你批量大小和填充选项 | 当用不同长度的序列进行预测时,迷你批量大小可以影响添加到的输入数据的填充量,这导致不同的预测值。尝试使用不同的值,以查看最适合您的网络。 要指定迷你批量大小和填充选项,请使用 |
要指定执行环境,使用'executionenvironment'
选项培训选项
.
问题 | 更多的信息 |
---|---|
对CPU的培训很慢 | 如果培训在单个CPU上过于慢,请尝试使用预先使用的深度学习网络作为特征提取器并培训机器学习模型。例如,请参见利用预训练网络提取图像特征. |
GPU上的LSTM训练很慢 | CPU更适合使用具有短序列的迷你批次训练LSTM网络。要使用CPU,请设置 |
软件不使用所有可用的GPU | 如果您可以访问具有多个GPU的机器,只需设置'executionenvironment' 选项培训选项 来'多gpu' .有关更多信息,请参见在多个GPU上与MATLAB深入学习. |
有关更多信息,请参见在GPU和云中平行扩展深度学习.
如果您无法从MAT-file加载层或网络并得到表单的警告
警告:无法将Class Playery的实例加载到异构阵列中。Playery的定义可能丢失或包含错误。默认对象将被替换。警告:加载类“系列网络”的对象时:使用talls nnet.cnn.layer.missingLayer中的'转发'时出错。该函数抛出了错误,无法执行错误。
该文件包含不在路径上的自定义图层 - 要加载包含自定义图层的网络,将自定义图层文件添加到MATLAB中®小路。
该文件包含来自支持包的自定义层-要使用来自支持包的层加载网络,请使用相应的函数在金宝app命令行安装所需的支持包(例如,resnet18
)或使用附加资源管理器。
该文件包含一个来自文档示例的自定义层,但不在路径上。要加载包含文档示例自定义层的网络,将示例作为Live Script打开,并将该层从示例文件夹复制到工作目录。
该文件包含从未安装的工具箱中的图层 - 从其他工具箱访问图层,例如计算机视觉工具箱或文本分析工具箱,安装相应的工具箱。
尝试建议的解决方案后,重新加载MAT文件。金宝搏官方网站