您可以通过各种方式训练和定制深度学习模型——例如,您可以使用新数据(迁移学习)对一个预先训练过的模型进行再训练,从头开始训练网络,或者将深度学习模型定义为一个函数并使用定制的训练循环。使用这个流程图来选择最适合你的任务的训练方法。
提示
有关计算机视觉工作流程的信息,包括物体检测的信息,请参见利用深度学习的计算机视觉。有关从TensorFlow™-Keras、Caffe和ONNX™(Open Neural network Exchange)模型格式导入网络和网络架构的信息,请参见深度学习导入和导出。
这个表格提供了关于不同训练方法的信息。
方法 | 更多的信息 |
---|---|
直接使用网络 | 如果预先训练的网络已经执行了您需要的任务,那么您就不需要再训练网络。相反,您可以通过使用 例如,请参见使用GoogLeNet分类图像。 |
列车网络的使用trainingOptions 和trainNetwork |
如果您有一个指定为层数组或层图的网络,并且 有关如何再培训网络(迁移学习)的示例,请参见训练深度学习网络对新图像进行分类。有关如何从头开始训练网络的示例,请参见创建简单的深度学习网络分类。 |
列车网络的使用dlnetwork 对象和自定义训练循环 |
对于大多数任务,您可以使用 对于不能使用输出层指定的损失函数,可以在自定义训练循环中指定损失。 有关如何使用自定义学习速率计划训练网络的示例,请参见使用自定义训练循环训练网络。 要学,多看定义自定义训练循环,损失函数和网络。 |
使用模型函数和自定义训练循环训练网络 | 对于无法使用层图创建的网络,可以将自定义网络定义为函数。有关如何训练定义为函数的深度学习模型的示例,请参见使用模型函数的列车网络。 如果可以使用层图创建网络的各个部分,那么可以使用模型函数将这些部分定义为层图,将不支持的部分定义为模型函数。金宝app |
这个表格提供了流程图中每个决策的更多信息。
决定 | 更多的信息 |
---|---|
深度学习工具箱™是否提供了一个合适的预训练网络? | 对于大多数任务,您可以使用或再训练一个预先训练过的网络,例如 在MATLAB中预先训练的深度学习网络的列表®,请参阅预先训练的深度神经网络。你可以用新数据直接使用预先训练好的网络,也可以用迁移学习的新数据对它们进行再训练,以完成不同的任务。 |
你能不经过再培训就使用这个网络吗? | 如果一个预先训练过的网络已经完成了你需要的任务,那么你可以直接使用这个网络而不需要再训练。例如,你可以使用 如果你需要对网络进行再培训——例如,对不同的类别进行分类——那么你可以使用迁移学习对网络进行再培训。 |
你能将模型定义为层数组或图形吗? | 您可以将大多数深度学习模型指定为层数组或层图。换句话说,您可以将模型定义为层的集合,层输出连接到其他层输入。 有些网络架构不能定义为层图。例如,暹罗网络需要权值共享,不能定义为层图。对于这些网络,您必须将模型定义为一个函数。例如,请参见使用模型函数的列车网络。 |
网络是否只有一个输出? | 对于具有多个输出的网络,必须使用自定义训练循环来训练网络。例如,请参见多输出列车网络。 |
深度学习工具箱提供了你需要的中间层吗? | 深度学习工具箱提供了许多不同层次的深度学习任务。有关层的列表,请参见深度学习层列表。 如果深度学习工具箱提供了您需要的中间层(网络中间的层),那么您可以使用这些层将网络定义为层阵列或层图。否则,尝试将任何不支持的层定义为自定义层。金宝app有关更多信息,请参见定义自定义深度学习层。 |
你能将不支持的中间层定义为自定义层吗?金宝app | 如果深度学习工具箱没有提供您需要的层,那么您可以尝试定义一个自定义的深度学习层。有关更多信息,请参见定义自定义深度学习层。 如果可以为任何不支持的层定义自定义层,则可以在层数组或层图中包含这些自定义层。金宝app否则,使用函数指定深度学习模型,并使用自定义训练循环训练模型。例如,请参见使用模型函数的列车网络。 |
深度学习工具箱是否提供了您需要的输出层? | 输出层指定用于训练的损失函数。深度学习工具箱为深度学习任务提供不同的输出层。例如, 如果深度学习工具箱提供了您需要的输出层,那么您可以使用这些层定义一个层图。否则,请尝试将任何不支持的输出层定义为自定义层。金宝app有关更多信息,请参见定义自定义深度学习层。 |
您可以将不支持的输出层定义为自定义层吗?金宝app | 如果深度学习工具箱不提供您需要的输出层,那么您可以尝试定义一个自定义输出层。有关更多信息,请参见定义自定义深度学习层。 如果可以为任何不支持的输出层定义自定义输出层,则可以在层数组或层图中包含这些自定义层。金宝app否则,使用a训练模型 |
是否trainingOptions 功能提供您需要的选项? |
的 如果 |