对于大多数深学习任务,你可以使用预训练网络,并使其适应自己的数据。有关说明如何使用传输学习再培训卷积神经网络,一组新的图片进行分类示例,请参见火车深学习网络分类新形象。或者,你可以创建和使用从头开始培训网络layerGraph
与对象trainNetwork
和trainingOptions
功能。
如果trainingOptions
功能不提供培训选项,你需要为你的任务,那么你可以创建一个使用自动分化定制培训圈。要了解更多信息,请参阅定义自定义培训循环。
如果深度学习工具箱™不提供你需要为你的任务(包括指定损失函数输出层)的图层,然后您可以创建自定义层。要了解更多信息,请参阅定义自定义深层次学习。对于不能使用输出层指定损失函数,你可以指定一个自定义的训练循环的损失。要了解更多信息,请参阅指定损失函数。对于不能使用层图来创建网络,您可以自定义网络的功能。要了解更多信息,请参阅定义自定义网络。
定制培训循环,损失的功能,和网络使用自动分化为自动计算模型梯度。要了解更多信息,请参阅自动微分背景。
对于大多数任务,您可以控制使用训练算法细节trainingOptions
和trainNetwork
功能。如果trainingOptions
功能不提供您需要为您的任务选项(例如,定制的学习费率表),那么你可以使用自动微分定义自己的训练循环。
有关说明如何培养具有自定义学习税率表网络的例子,请参阅列车网络使用自定义训练循环。
要更新可以学习的参数,你必须首先对于可学参数计算损失的梯度。
创建窗体的功能梯度= modelGradients(dlnet,DLX,DLT)
,其中dlnet
是网络,DLX
是输入的预测,DLT
是目标,梯度
在返回的梯度。或者,您可以通过额外的参数给梯度功能(例如,如果损失函数需要额外的信息),或返回额外的参数(例如,用于绘制训练进度指标)。对于定义为函数的模型,你并不需要通过网络作为输入参数。
要使用自动分化,你打电话dlgradient
计算函数的梯度,和dlfeval
建立或更新的计算图表。这些功能使用dlarray
管理数据结构,使评价的跟踪。
要更新网络权,可以使用以下功能:
功能 | 描述 |
---|---|
adamupdate |
采用自适应矩估计更新参数(亚当) |
rmspropupdate |
使用均方根传播更新参数(RMSProp) |
sgdmupdate |
使用随机梯度下降动量更新参数(SGDM) |
dlupdate |
使用自定义功能更新参数 |
为示出如何创建模型梯度起作用来训练产生的图像的生成对抗网络(GAN)的例子,请参见火车剖成对抗性网络(GAN)。
当使用dlnetwork
对象,不使用输出层,而必须在模型梯度功能手动计算损失。您可以使用下面的函数来计算损失:
功能 | 描述 |
---|---|
SOFTMAX |
所述SOFTMAX激活操作应用SOFTMAX函数应用于所述输入数据的通道尺寸。 |
乙状结肠 |
乙状结肠激活操作应用S形函数来的输入数据。 |
crossentropy |
交叉熵操作计算网络预测和目标值单标签和多标签分类任务之间的交叉熵损失。 |
MSE |
半均方误差操作计算网络的预测值与目标值之间的回归任务的一半均方误差损失。 |
另外,您也可以通过创建窗体的功能使用自定义功能丧失损耗= myLoss(Y,T)
,其中ÿ
是网络预测,Ť
是目标,失利
是返回的损失。
计算梯度更新网络的权重时,使用损耗值。
为示出如何创建模型梯度起作用来训练生成使用自定义损失函数的图像的生成对抗网络(GAN)的例子,请参见火车剖成对抗性网络(GAN)。
对于大多数任务,您可以使用预训练网络或定义自己的网络层图。要了解更多关于预训练的网络,请参阅预训练深层神经网络。对于由支持层的列表金宝appdlnetwork
对象,见金宝app支持图层。
对于不能使用层图来创建架构,您可以定义自定义模型形式的功能[DLY1,...,dlYM] =模型(dlX1,...,dlXN,参数)
,其中dlX1,...,dlXN
对应于用于将输入数据ñ
模型输入,参数
包含网络参数,DLY1,...,dlYM
对应于中号
模型输出。要培养一个自定义的网络,使用自定义的训练循环
如果你定义一个自定义网络功能,那么模型功能必须支持自动分化。金宝app您可以使用下面的深度学习操作。这里列出的功能只有一个子集。有关功能的完整列表支持金宝appdlarray
输入,见与dlarray支持功能列表金宝app。
功能 | 描述 |
---|---|
avgpool |
平均池操作执行通过将输入到集中区域以及计算每个区域的平均值的下采样。 |
batchnorm |
将批料归一化运算跨归一小批量每个输入通道。为了加快卷积神经网络的训练,并减少网络初始化,卷积和非线性操作,例如使用间批次正常化的灵敏度RELU 。 |
crossentropy |
交叉熵操作计算网络预测和目标值单标签和多标签分类任务之间的交叉熵损失。 |
crosschannelnorm |
该交叉信道归一化操作使用不同的信道响应的本地归一化每个激活。跨渠道正常化通常跟随RELU 操作。跨渠道正常化也被称为本地响应归一化。 |
dlconv |
卷积运算适用滑动过滤器来输入数据。使用1-d和2-d与过滤器未分组或分组的卷积和3-d滤波器与未分组的卷积。 |
dltranspconv |
转置卷积运算上采样特征图。 |
fullyconnect |
完全连接操作乘以的权重矩阵的输入,然后将偏置矢量。 |
GRU |
门控重复单元(GRU)操作允许网络学习时间步长之间的依赖关系在时间序列和序列数据。 |
leakyrelu |
漏泄整流线性单元(RELU)激活操作执行一非线性阈值操作,其中小于零的任何输入值由固定比例因子相乘。 |
LSTM |
长短期存储器(LSTM)操作允许网络学习时间步长之间的长期依赖于时间序列和序列数据。 |
maxpool |
最大池操作执行通过将输入到集中区域以及计算每个区域的最大值下采样。 |
maxunpool |
最大unpooling操作unpools通过上采样和用0填充的输出的最大池操作的。 |
MSE |
半均方误差操作计算网络的预测值与目标值之间的回归任务的一半均方误差损失。 |
RELU |
整流后的线性单元(RELU)激活操作执行一非线性阈值操作,其中小于零的任何输入值被设置为零。 |
乙状结肠 |
乙状结肠激活操作应用S形函数来的输入数据。 |
SOFTMAX |
所述SOFTMAX激活操作应用SOFTMAX函数应用于所述输入数据的通道尺寸。 |
dlarray
|dlfeval
|dlgradient
|dlnetwork