主要内容

训练深度学习模型MATLAB

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

提示

有关计算机视觉工作流程的信息,包括物体检测的信息,请参见利用深度学习的计算机视觉。有关从TensorFlow™-Keras、Caffe和ONNX™(Open Neural network Exchange)模型格式导入网络和网络架构的信息,请参见深度学习导入和导出

训练方法

这个表格提供了关于不同训练方法的信息。

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

如果预先训练的网络已经执行了您需要的任务,那么您就不需要再训练网络。相反,您可以通过使用分类预测功能。

例如,请参见使用GoogLeNet分类图像

列车网络的使用trainingOptionstrainNetwork

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

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

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

对于大多数任务,您可以使用trainingOptionstrainNetwork功能。如果trainingOptions函数不提供任务所需的选项(例如,自定义学习速率计划),那么您可以使用dlnetwork对象。一个dlnetwork对象允许您使用自动区分来训练指定为层图的网络。

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

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

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

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

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

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

决定

这个表格提供了流程图中每个决策的更多信息。

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

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

在MATLAB中预先训练的深度学习网络的列表®,请参阅预先训练的深度神经网络。你可以用新数据直接使用预先训练好的网络,也可以用迁移学习的新数据对它们进行再训练,以完成不同的任务。

你能不经过再培训就使用这个网络吗?

如果一个预先训练过的网络已经完成了你需要的任务,那么你可以直接使用这个网络而不需要再训练。例如,你可以使用googlenet网络分类图像在1000类。要直接用网络进行预测,请使用分类预测功能。例如,请参见使用GoogLeNet分类图像

如果你需要对网络进行再培训——例如,对不同的类别进行分类——那么你可以使用迁移学习对网络进行再培训。

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

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

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

网络是否只有一个输出?

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

深度学习工具箱提供了你需要的中间层吗?

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

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

你能将不支持的中间层定义为自定义层吗?金宝app

如果深度学习工具箱没有提供您需要的层,那么您可以尝试定义一个自定义的深度学习层。有关更多信息,请参见定义自定义深度学习层

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

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

输出层指定用于训练的损失函数。深度学习工具箱为深度学习任务提供不同的输出层。例如,classificationLayerregressionLayer。有关输出层的列表,请参见输出层页中的部分深度学习层列表

如果深度学习工具箱提供了您需要的输出层,那么您可以使用这些层定义一个层图。否则,请尝试将任何不支持的输出层定义为自定义层。金宝app有关更多信息,请参见定义自定义深度学习层

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

如果深度学习工具箱不提供您需要的输出层,那么您可以尝试定义一个自定义输出层。有关更多信息,请参见定义自定义深度学习层

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

是否trainingOptions功能提供您需要的选项?

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

如果trainingOptions函数不提供您需要的训练选项,例如,自定义学习率计划,那么您可以使用dlnetwork对象。例如,请参见使用自定义训练循环训练网络

另请参阅

|

相关的话题