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