主要内容

训练深度学习模型MATLAB

您可以以各种方式训练和定制一个深度学习模型——例如,您可以用新数据重新训练一个预先训练过的模型(迁移学习),从头训练一个网络,或者将一个深度学习模型定义为一个函数并使用定制的训练循环。使用这个流程图来选择最适合你的任务的训练方法。

提示

有关计算机视觉工作流程的信息,包括物体检测,请参见深度学习的计算机视觉.有关从TensorFlow™-Keras、Caffe和ONNX™(开放神经网络交换)模型格式导入网络和网络架构的信息,请参见深度学习导入和导出

训练方法

该表提供了不同的培训方法的信息。

方法 更多的信息
直接使用网络

如果预先训练过的网络已经执行了所需的任务,则不需要重新训练网络。相反,您可以通过使用分类而且预测功能。

示例请参见使用GoogLeNet对图像进行分类

列车网络使用trainingOptions而且trainNetwork

如果网络指定为层数组或层图,则trainingOptions函数提供所需的所有选项,然后您可以使用trainNetwork函数。

有关如何重新训练网络的示例(迁移学习),请参见训练深度学习网络对新图像进行分类.有关如何从零开始训练网络的示例,请参见创建简单的深度学习网络分类

列车网络使用dlnetwork对象和自定义训练循环

方法可以控制训练算法细节trainingOptions而且trainNetwork功能。如果trainingOptions函数没有提供任务所需的选项(例如,自定义学习速率计划),那么可以使用dlnetwork对象。一个dlnetwork对象允许您使用自动区分训练指定为层图的网络。

对于不能使用输出层指定的损耗函数,可以在自定义训练循环中指定损耗。

有关演示如何使用自定义学习速率计划训练网络的示例,请参见使用自定义训练循环训练网络

多学,多见定义自定义训练循环,损失函数和网络

使用模型函数和自定义训练循环训练网络

对于不能使用层图创建的网络,可以将自定义网络定义为函数。有关演示如何训练定义为函数的深度学习模型的示例,请参见利用模型函数的列车网络

如果您可以使用层图创建网络的部分,那么您可以将这些部分定义为层图,并使用模型函数将不支持的部分定义为层图。

决定

该表提供了关于流程图中每个决策的更多信息。

决定 更多的信息
深度学习工具箱™是否提供了一个合适的预训练网络?

对于大多数任务,您可以使用或重新训练预先训练过的网络,例如googlenet

用于MATLAB中预训练深度学习网络的列表®,请参阅预训练深度神经网络.您可以使用预先训练的网络直接与新数据,或者您可以使用新数据重新训练它们使用迁移学习不同的任务。

你能不用再培训就使用网络吗?

如果预先训练过的网络已经执行了您需要的任务,那么您可以直接使用该网络,而无需再训练。例如,您可以使用googlenet网络将图像分类为1000类。要直接使用网络进行预测,请使用分类而且预测功能。示例请参见使用GoogLeNet对图像进行分类

如果您需要重新训练网络—例如,对一组不同的类进行分类—那么您可以使用迁移学习来重新训练网络。

你能将模型定义为一个层数组或图形吗?

您可以将大多数深度学习模型指定为层数组或层图。换句话说,您可以将模型定义为一组层,其中层输出连接到其他层输入。

有些网络架构不能定义为层图。例如,Siamese网络需要权值共享,不能定义为层图。对于这些网络,必须将模型定义为函数。示例请参见利用模型函数的列车网络

网络是否只有一个输出?

对于具有多个输出的网络,必须使用自定义训练循环来训练网络。示例请参见多输出训练网络

“深度学习工具箱”是否提供了您需要的中间层?

“深度学习工具箱”为深度学习任务提供了许多不同的层。有关层的列表,请参见深度学习层列表

如果深度学习工具箱提供所需的中间层(网络中间的层),则可以使用这些层将网络定义为层数组或层图。否则,尝试将任何不支持的层定义为自定义层。有关更多信息,请参见定义自定义深度学习层

能否将不支持的中间层定义为自定义层?

如果“深度学习工具箱”没有提供所需的层,则可以尝试定义自定义深度学习层。有关更多信息,请参见定义自定义深度学习层

如果你可以为任何不支持的层定义自定义层,那么你可以在层数组或层图中包含这些自定义层。否则,使用函数指定深度学习模型,并使用自定义训练循环训练模型。示例请参见利用模型函数的列车网络

“深度学习工具箱”是否提供您需要的输出层?

输出层指定用于训练的损耗函数。“深度学习工具箱”为深度学习任务提供了不同的输出层。例如,classificationLayer而且regressionLayer.有关输出层的列表,请参见输出层页中的部分深度学习层列表

如果“深度学习工具箱”提供所需的输出层,则可以使用这些层定义层图。否则,尝试将任何不支持的输出层定义为自定义层。有关更多信息,请参见定义自定义深度学习层

您可以将不支持的输出层定义为自定义层吗?

如果“深度学习工具箱”没有提供所需的输出层,则可以尝试定义一个自定义输出层。有关更多信息,请参见定义自定义深度学习层

如果您可以为任何不支持的输出层定义一个自定义输出层,那么您可以将这些自定义层包含在层数组或层图中。否则,训练模型使用dlnetwork对象和自定义训练循环,并指定自定义丢失函数。示例请参见使用自定义训练循环训练网络

是否trainingOptions函数提供所需的选项?

trainingOptions函数为定制训练过程提供了许多选项。如果trainingOptions函数提供了训练所需的所有选项,然后可以使用trainNetwork函数。示例请参见创建简单的深度学习网络分类

如果trainingOptions函数没有提供所需的训练选项,例如,自定义学习速率计划,则可以使用dlnetwork对象。示例请参见使用自定义训练循环训练网络

另请参阅

|

相关的话题

Baidu
map