dlfeval

评估的定制培训圈深度学习模型

描述

dlfeval以评估定制培训环路自定义深层的学习模式。

小费

对于大多数深学习任务,你可以使用预训练网络,并使其适应自己的数据。有关说明如何使用传输学习再培训卷积神经网络,一组新的图片进行分类示例,请参见火车深学习网络分类新形象。或者,你可以创建和使用从头开始培训网络layerGraph与对象trainNetworktrainingOptions功能。

如果trainingOptions功能不提供培训选项,你需要为你的任务,那么你可以创建一个使用自动分化定制培训圈。要了解更多信息,请参阅定义自定义培训循环

[ÿ1,...,YK] = dlfeval(开玩笑X1,...,XN)评估深学习数组函数开玩笑在输入参数X1,...,Xñ。功能传递给dlfeval可以包含通话dlgradient,其计算梯度从输入端X通过使用自动的分化。

例子

全部收缩

的ROSENBROCK的功能是优化标准的测试功能。该rosenbrock.m辅助函数计算功能值,并使用自动微分来计算其梯度。

类型rosenbrock.m
函数[Y,dydx] =的ROSENBROCK(X)Y = 100 *(X(2) -  X(1)^ 2)^ 2 +(1  -  X(1))^ 2。。。;dydx = dlgradient(Y,X);结束

要在点评估的ROSENBROCK的功能及其梯度[-1,2], 创建一个dlarray点,然后调用dlfeval在功能手柄@rosenbrock

X0 = dlarray([ -  1,2]);[FVAL,gradval] = dlfeval(@的ROSENBROCK,X0)
FVAL = 1×1 dlarray 104
gradval = 1×2 dlarray 396 200

可替换地,限定的ROSENBROCK的功能的两个输入的功能,X1和X2

类型rosenbrock2.m
函数[Y,dydx1,dydx2] = rosenbrock2(X1,X2)Y = 100 *(。X2  -  X1 ^ 2)^ 2 +(1  -  X1)^ 2。。。;[dydx1,dydx2] = dlgradient(Y,X1,X2);结束

呼叫dlfeval评估rosenbrock2dlarray表示的输入参数-12

X1 = dlarray(-1);X2 = dlarray(2);[FVAL,dydx1,dydx2] = dlfeval(@ rosenbrock2,X1,X2)
FVAL = 1×1 dlarray 104
dydx1 = 1×1 dlarray 396
dydx2 = 1×1 dlarray 200

剧情的Rosenbrock函数的梯度在单位正方形的几个点。首先,初始化表示评价点和函数的输出的阵列。

[X1 X2] = meshgrid(linspace(0,1,10));X1 = dlarray(X1(:));X2 = dlarray(X2(:));Y = dlarray(零(大小(X1)));DYDX1 = Y;DYDX2 = Y;

评估在一个循环的功能。绘制使用结果颤动

对于I = 1:长度(X1)[Y(i)中,DYDX1(i)中,DYDX2(I)] = dlfeval(@ rosenbrock2,X1(i)中,X 2(I));结束颤动(ExtractData由(X1),ExtractData由(X2),ExtractData由(DYDX1),ExtractData由(DYDX2))xlabel('X1')ylabel('X2'

输入参数

全部收缩

功能评估,指定为函数句柄。如果开玩笑包括dlgradient打电话,然后dlfeval评估通过使用自动微分梯度。在此梯度的评价,对每个参数dlgradient电话必须是dlarray或含有一个单元阵列,结构或表dlarray。的输入参数的数量dlfeval必须是相同的作为输入参数的数目开玩笑

例:@rosenbrock

数据类型:function_handle

函数的参数,指定为任何MATLAB数据类型。

输入参数Xj为分化的变量在dlgradient呼叫必须被跟踪dlarray或一个单元阵列,结构,或包含表一个跟踪dlarray。一个额外的变量,诸如超参数或恒定数据阵列不必是dlarray

例:dlarray([1 2 3 4])

数据类型:||INT8|INT16|INT32|Int64的|UINT8|UINT16|UINT32|UINT64|合乎逻辑|烧焦||结构||细胞|function_handle|明确的|约会时间|持续时间|calendarDuration|科幻

输出参数

全部收缩

函数输出,返回任何数据类型。如果输出从结果dlgradient调用时,输出是一个dlarray

提示

  • 一个dlgradient电话必须是一个函数里面。为了获得一个梯度的数值,必须使用评价功能dlfeval和函数参数必须是一个dlarray。看到使用自动分化深度学习工具箱

  • dlgradient不支持更高阶导数。万博1manbetx换句话说,你不能越过的输出dlgradient打电话到另一个dlgradient呼叫。

  • 为了使梯度的正确评价,功能开玩笑必须使用仅支持的功能万博1manbetxdlarray。看到与dlarray支持功能列表万博1manbetx

介绍了在R2019b