使用自动微分为自定义训练循环计算梯度
采用Dlgradient.
使用自定义训练循环的自动微分来计算导数。
提示
对于大多数深度学习任务,您可以使用预先训练的网络,并使其适应您自己的数据。有关如何使用迁移学习来重新训练卷积神经网络来对一组新图像进行分类的示例,请参见培训深度学习网络以分类新图像.或者,您可以使用划痕创建和培训网络分层图
对象与之Trainnetwork.
和培训选项
功能。
如果是培训选项
函数不提供任务所需的训练选项,则可以使用自动区分创建自定义训练循环。想要了解更多,请看定义定制培训循环的深度学习网络.
[
返回的梯度dydx1,...,dydxk
) = dlgradient (y
,X1,...,XK
)y
关于变量x1
通过XK.
.
调用Dlgradient.
从通过的函数内dlfeval
.看到使用自动微分计算梯度和在深度学习工具箱中使用自动差异化.
[
返回渐变并使用一个或多个名称值对指定其他选项。例如,dydx1,...,dydxk
) = dlgradient (y
,X1,...,XK
,名称,价值
)就要= dlgradient (y, x, RetainData,真的)
导致梯度保留后续重用的中间值Dlgradient.
调用。这种语法可以节省时间,但会占用更多内存。有关更多信息,请参见提示.
的dlgraident
函数在使用时不支持计算高阶导数金宝appdlnetwork.
对象,该对象包含带有自定义向后函数的自定义层。
的dlgraident
函数在使用时不支持计算高阶导数金宝appdlnetwork.
包含以下图层的对象:
gruLayer
lstmlayer.
Bilstmlayer.
的Dlgradient.
函数不支持计算依赖于以下函数的高阶导金宝app数:
gru.
lstm
嵌入
prod
interp1.
一个Dlgradient.
调用必须在函数内部。要获得梯度的数值,必须使用dlfeval
,函数的实参必须是dlarray.
.看到在深度学习工具箱中使用自动差异化.
启用对梯度的正确评估,y
参数必须仅使用支持的功能金宝appdlarray.
.看到Dlarray支持的函数列表金宝app.
如果你设置“RetainData”
名称 - 值对参数真的
,该软件将在dlfeval
函数调用,而不是在衍生计算之后立即擦除轨迹。这种保存会导致随后的Dlgradient.
呼叫在内dlfeval
调用的执行速度更快,但使用的内存更多。例如,在训练一个对抗网络时“RetainData”
设置是有用的,因为两个网络在训练期间共享数据和功能。看到训练生成对抗网络(GAN).
当您仅需要计算一阶导数时,请确保'enabentherderivatives'
选项是错误的
由于这通常更快,需要更少的内存。