主要内容gydF4y2Ba

使用自动分化gydF4y2Ba深度学习工具箱gydF4y2Ba

定制培训和计算使用自动分化gydF4y2Ba

自动分化更容易创建自定义训练循环、自定义层,和其他深度学习定制。gydF4y2Ba

一般来说,最简单的方法是创建一个自定义深度学习培训gydF4y2BadlnetworkgydF4y2Ba。包括层网络中你想要的。然后执行自定义训练循环通过使用某种形式的梯度下降法,梯度的目标函数的梯度。目标函数可以分类错误,叉,或任何其他相关网络权重的标量函数。看到gydF4y2Ba与dlarray支持函数的列表万博1manbetxgydF4y2Ba。gydF4y2Ba

这个例子是一个高级版本的定制培训循环。在这里,gydF4y2BafgydF4y2Ba是目标函数,如损失,然后呢gydF4y2BaggydF4y2Ba是目标函数的梯度对网络的权重吗gydF4y2Ba净gydF4y2Ba。的gydF4y2Ba更新gydF4y2Ba函数代表了某种类型的梯度下降法。gydF4y2Ba

%高级训练循环gydF4y2Ban = 1;gydF4y2Ba而gydF4y2Ba(n < nmax) (f, g) = dlfeval (@ model,净,X, T);网=更新(净,g);n = n + 1;gydF4y2Ba结束gydF4y2Ba

你叫gydF4y2BadlfevalgydF4y2Ba计算的数值目标和梯度。要启用梯度的自动计算,数据gydF4y2BaXgydF4y2Ba必须是一个gydF4y2BadlarraygydF4y2Ba。gydF4y2Ba

X = dlarray (X);gydF4y2Ba

目标函数有一个gydF4y2BadlgradientgydF4y2Ba调用计算梯度。的gydF4y2BadlgradientgydF4y2Ba函数的调用必须在gydF4y2BadlfevalgydF4y2Ba评估。gydF4y2Ba

函数gydF4y2Ba(f, g) =模型(净,X, T)gydF4y2Ba%计算dlarray目的使用支持函数万博1manbetxgydF4y2BaY =前进(净,X);f = fcnvalue (Y, T);gydF4y2Ba% crossentropy或类似的gydF4y2Bag = dlgradient (f, net.Learnables);gydF4y2Ba%自动梯度gydF4y2Ba结束gydF4y2Ba

使用一个例子gydF4y2BadlnetworkgydF4y2Ba与一个gydF4y2BadlfevalgydF4y2Ba- - - - - -gydF4y2BadlgradientgydF4y2Ba- - - - - -gydF4y2BadlarraygydF4y2Ba语法和一个定制的训练循环,明白了gydF4y2Ba列车网络的使用自定义训练循环gydF4y2Ba。详情在定制培训使用自动分化,明白了gydF4y2Ba自定义训练循环,损失函数和网络gydF4y2Ba。gydF4y2Ba

使用gydF4y2BadlgradientgydF4y2Ba和gydF4y2BadlfevalgydF4y2Ba在一起自动分化gydF4y2Ba

要使用自动分化,您必须调用gydF4y2BadlgradientgydF4y2Ba内部函数和评价函数使用gydF4y2BadlfevalgydF4y2Ba。代表你求导gydF4y2BadlarraygydF4y2Ba对象,该对象的数据结构,使跟踪管理评估。例如,。函数是一种常见的测试函数的优化。gydF4y2Ba

函数gydF4y2Ba[f,毕业生]=。f (x) = 100 * (x - x (1) (2)。^ 2)。^ 2 + (1 - x (1)) ^ 2;研究生= dlgradient (f (x);gydF4y2Ba结束gydF4y2Ba

计算值和梯度的函数在点。gydF4y2Bax0gydF4y2Ba= [1,2]。启用自动分化。函数,通过gydF4y2Bax0gydF4y2Ba作为一个gydF4y2BadlarraygydF4y2Ba。gydF4y2Ba

x0 = dlarray ([1, 2]);[fval, gradval] = dlfeval (x0 @rosenbrock)gydF4y2Ba
fval = 1 x1 dlarray 104 gradval = 1 x2 dlarray 396 200gydF4y2Ba

使用自动分化为例,看看gydF4y2Ba列车网络的使用自定义训练循环gydF4y2Ba。gydF4y2Ba

导数的跟踪gydF4y2Ba

评估一个梯度数值,agydF4y2BadlarraygydF4y2Ba为反向分化模式,构造一个数据结构中描述gydF4y2Ba自动分化背景gydF4y2Ba。这个数据结构是gydF4y2Ba跟踪gydF4y2Ba导数的计算。请记住这些指导方针在使用自动微分和微分跟踪:gydF4y2Ba

  • 不引入一个新的gydF4y2BadlarraygydF4y2Ba在目标函数的计算和试图区分该对象。例如:gydF4y2Ba

    函数gydF4y2Ba(dy,₁) =乐趣(x1) x2 = dlarray (0);y = x1 + x2;dy = dlgradient (y, x2);gydF4y2Ba%错误:untraced x2gydF4y2Bay₁= dlgradient (x1);gydF4y2Ba%没有错误即使y untraced部分gydF4y2Ba结束gydF4y2Ba
  • 不要使用gydF4y2BaextractdatagydF4y2Ba跟踪参数。这样做破坏了跟踪。例如:gydF4y2Ba

    有趣= @ (x) dlgradient (x +世界(extractdata (x)), x);gydF4y2Ba%梯度的点是1由于领先的“x”术语的乐趣。gydF4y2Badlfeval(有趣,dlarray (2.5))gydF4y2Ba
    ans = 1 x1 dlarray 1gydF4y2Ba

    不过,您可以使用gydF4y2BaextractdatagydF4y2Ba引入一个新的独立变量从一个依赖。gydF4y2Ba

  • 当并行工作,移动跟踪dlarray客户机和工人之间的休息时间跟踪对象。追踪dlarray对象保存在工人和加载客户端作为一个untraced dlarray对象。为了避免打破并行跟踪工作时,计算所需的所有渐变的工人,然后结合客户机上的梯度。例如,看到的gydF4y2Ba列车网络与自定义训练循环gydF4y2Ba。gydF4y2Ba

  • 只使用支持功能。万博1manbetx支持函数的列表,请参阅万博1manbetxgydF4y2Ba与dlarray支持函数的列表万博1manbetxgydF4y2Ba。使用一个不支持的功能万博1manbetxgydF4y2BafgydF4y2Ba,努力实现gydF4y2BafgydF4y2Ba使用支持的功万博1manbetx能。gydF4y2Ba

自动衍生品的特点gydF4y2Ba

  • 您可以使用自动评价梯度差异化只是纯量值函数。中间的计算可以拥有任意数量的变量,但最终必须标量函数值。如果你需要向量值函数的求导,衍生品的一个组件。在这种情况下,考虑设置gydF4y2BadlgradientgydF4y2Ba“RetainData”gydF4y2Ba名称-值对参数gydF4y2Ba真正的gydF4y2Ba。gydF4y2Ba

  • 调用gydF4y2BadlgradientgydF4y2Ba在一个特定的点评估衍生品。软件通常会使任意选择的价值当没有导数的理论价值。例如,gydF4y2Ba线性整流函数(Rectified Linear Unit)gydF4y2Ba函数,gydF4y2Barelu (x) = max (x, 0)gydF4y2Ba没有可微gydF4y2Bax = 0gydF4y2Ba。然而,gydF4y2BadlgradientgydF4y2Ba返回一个值的导数。gydF4y2Ba

    x = dlarray (0);y = dlfeval (@ (t) dlgradient (relu (t), t), x)gydF4y2Ba
    y = 1 x1 dlarray 0gydF4y2Ba

    在附近的点值gydF4y2Ba每股收益gydF4y2Ba是不同的。gydF4y2Ba

    x = dlarray (eps);y = dlfeval (@ (t) dlgradient (relu (t), t), x)gydF4y2Ba
    y = 1 x1 dlarray 1gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

相关的话题gydF4y2Ba