主要内容

AcceleratedFunction

加速深度学习函数

自从R2021a

    描述

    一个AcceleratedFunction商店底层函数的痕迹

    重用一个缓存跟踪取决于函数的输入和输出:

    • 对于任何dlarray对象或结构dlarray对象的输入,跟踪取决于大小,格式,和底层的数据类型dlarray。即加速函数触发一个新的跟踪dlarray输入与大小,格式,或潜在的数据类型不包含在缓存中。任何dlarray输入不同的价值只有通过先前缓存的跟踪不引发一个新的跟踪。

    • 对于任何dlnetwork输入,跟踪取决于大小,格式,和底层的数据类型dlnetwork状态和可学的参数。即加速函数触发一个新的跟踪dlnetwork输入与可学的参数或状态大小,格式,和底层数据类型不包含在缓存中。任何dlnetwork输入不同的值只有先前缓存的状态和可学的参数跟踪不引发一个新的跟踪。

    • 对于其他类型的输入,跟踪取决于输入的值。即加速功能触发一个新的跟踪与价值不包含在其他类型的输入缓存。任何其他输入相同的值作为一个先前缓存的跟踪不引发一个新的跟踪。

    • 跟踪的数量取决于函数输出。即加速功能触发一个新的跟踪函数调用以前所未有的数量的输出参数。任何函数调用相同数量的输出参数作为一个先前缓存的跟踪不引发一个新的跟踪。

    必要时,软件缓存任何新的痕迹通过评估底层函数和缓存结果跟踪AcceleratedFunction对象。

    返回的AcceleratedFunction对象缓存调用底层函数的痕迹和重用缓存结果相同的输入模式时重新出现。

    试着用dlaccelerate函数调用:

    • 是长时间运行的

    • dlarray对象的结构dlarray对象,或dlnetwork对象作为输入

    • 没有副作用,如写入文件或显示输出

    调用函数一样调用底层函数的加速。注意,加速函数不是一个函数处理。

    请注意

    当使用dlfeval函数,软件会自动加速向前预测功能dlnetwork输入。如果你加速深度学习函数的多数计算发生在调用向前预测功能dlnetwork输入,那么你可能不会看到训练时间的改善。

    谨慎

    一个AcceleratedFunction对象不知道更新底层函数。如果你修改函数与加速相关函数,然后清除缓存使用clearCache目标函数或者使用命令明确的功能

    创建

    创建一个AcceleratedFunction对象,使用dlaccelerate函数。

    属性

    全部展开

    这个属性是只读的。

    底层函数,指定为一个函数处理。

    数据类型:function_handle

    国旗来启用跟踪、指定为真正的

    数据类型:逻辑

    缓存的大小,指定为一个正整数。

    缓存大小对应的最大数量的输入和输出组合缓存。

    数据类型:

    这个属性是只读的。

    缓存命中率,指定为一个标量范围[0100]。

    缓存命中率对应的百分比重用评估。

    数据类型:

    这个属性是只读的。

    缓存占用,指定为一个标量范围[0100]。

    缓存的缓存占用对应比例使用。

    数据类型:

    检查模式,指定为以下之一:

    • “没有”——不检查加速的结果。

    • “宽容”——检查结果和加速底层函数的结果给出的公差范围内CheckTolerance财产。如果不是在这个公差的值,那么该函数抛出一个警告。

    检查公差,指定为一个积极的标量。

    如果CheckMode属性是“宽容”,然后加速功能检查结果和底层函数的结果给出的公差范围内CheckTolerance财产。如果不是在这个公差的值,那么该函数抛出一个警告。

    数据类型:

    对象的功能

    clearCache 明显加速深度学习函数跟踪缓存

    例子

    全部折叠

    加载dlnetwork对象和类的名字从垫文件dlnetDigits.mat

    s =负载(“dlnetDigits.mat”);网= s.net;一会= s.classNames;

    加速模型损失函数modelLoss上市的例子。

    有趣= @modelLoss;accfun = dlaccelerate(有趣的);

    清除任何先前缓存加速功能使用的痕迹clearCache函数。

    clearCache (accfun)

    视图的属性加速功能。因为缓存为空,入住率房地产是0。

    accfun
    accfun = AcceleratedFunction属性:功能:@modelLoss启用:1 CacheSize: 50 HitRate: 0入住率:0 CheckMode:‘没有’CheckTolerance: 1.0000 e-04

    返回的AcceleratedFunction对象存储底层函数调用的痕迹和重用缓存结果相同的输入模式时重新出现。使用加速功能自定义训练循环,调用模型梯度函数替换为调用加速功能。你可以调用加速函数会调用底层的函数。注意,加速函数不是一个函数处理。

    评估加速模型梯度函数与随机数据使用dlfeval函数。

    1128年X =兰特(28日,28日,“单身”);X = dlarray (X,“SSCB”);T =分类(类名(randi (10, 128 [1])));T = onehotencode (T, 2) ';T = dlarray (T)“CB”);(损失、渐变、状态)= dlfeval (accfun,净,X, T);

    查看入住率财产的加速功能。因为在评估函数,非空的缓存。

    accfun.Occupancy
    ans = 2

    损失函数模型

    modelLoss函数接受一个dlnetwork对象mini-batch的输入数据X与相应的目标标签T并返回损失,损失的梯度参数对可学的,和网络状态。计算梯度,使用dlgradient函数。

    函数(损失、渐变、状态)= modelLoss(净,X, T) [Y,状态]=前进(净,X);损失= crossentropy (Y, T);梯度= dlgradient(损失、net.Learnables);结束

    加载dlnetwork对象和类的名字从垫文件dlnetDigits.mat

    s =负载(“dlnetDigits.mat”);网= s.net;一会= s.classNames;

    加速模型损失函数modelLoss上市的例子。

    有趣= @modelLoss;accfun = dlaccelerate(有趣的);

    清除任何先前缓存加速功能使用的痕迹clearCache函数。

    clearCache (accfun)

    视图的属性加速功能。因为缓存为空,入住率房地产是0。

    accfun
    accfun = AcceleratedFunction属性:功能:@modelLoss启用:1 CacheSize: 50 HitRate: 0入住率:0 CheckMode:‘没有’CheckTolerance: 1.0000 e-04

    返回的AcceleratedFunction对象存储底层函数调用的痕迹和重用缓存结果相同的输入模式时重新出现。使用加速功能自定义训练循环,调用模型梯度函数替换为调用加速功能。你可以调用加速函数会调用底层的函数。注意,加速函数不是一个函数处理。

    评估加速模型梯度函数与随机数据使用dlfeval函数。

    1128年X =兰特(28日,28日,“单身”);X = dlarray (X,“SSCB”);T =分类(类名(randi (10, 128 [1])));T = onehotencode (T, 2) ';T = dlarray (T)“CB”);(损失、渐变、状态)= dlfeval (accfun,净,X, T);

    查看入住率财产的加速功能。因为在评估函数,非空的缓存。

    accfun.Occupancy
    ans = 2

    清除缓存使用clearCache函数。

    clearCache (accfun)

    查看入住率财产的加速功能。因为缓存清理,缓存是空的。

    accfun.Occupancy
    ans = 0

    损失函数模型

    modelLoss函数接受一个dlnetwork对象mini-batch的输入数据X与相应的目标标签T并返回损失,损失的梯度参数对可学的,和网络状态。计算梯度,使用dlgradient函数。

    函数(损失、渐变、状态)= modelLoss(净,X, T) [Y,状态]=前进(净,X);损失= crossentropy (Y, T);梯度= dlgradient(损失、net.Learnables);结束

    这个例子展示了如何检查加速功能的输出匹配底层函数的输出。

    在某些情况下,加速功能的输出不同的底层函数的输出。例如,您必须小心当加速使用随机数生成函数,比如一个函数生成随机噪声添加到网络的输入。当缓存函数产生随机数的痕迹,不是dlarray对象缓存加速功能产生的随机数的痕迹。重用跟踪时,加速函数使用缓存的随机值。加速功能不产生新的随机值。

    检查输出的加速功能匹配底层函数的输出,使用CheckMode财产的加速功能。当CheckMode财产的加速功能“宽容”和输出相差超过指定公差,加速函数抛出了一个警告。

    加速功能myUn金宝appsupportedFun列出使用的例子dlaccelerate函数。这个函数myUn金宝appsupportedFun生成随机噪声,并将其添加到输入。这个函数不支持加速度不是因为函数产生随机数金宝appdlarray对象。

    accfun = dlaccelerate (@myU金宝appnsupportedFun)
    accfun = AcceleratedFunction属性:功能:@myUnsupportedFun启用:1 Cache金宝appSize: 50 HitRate: 0入住率:0 CheckMode:‘没有’CheckTolerance: 1.0000 e-04

    清楚先前缓存的任何使用痕迹clearCache函数。

    clearCache (accfun)

    检查缓存重用的输出跟踪匹配底层函数的输出,设置CheckMode财产“宽容”

    accfun。CheckMode =“宽容”
    accfun = AcceleratedFunction属性:功能:@myUnsupportedFun启用:1 Cache金宝appSize: 50 HitRate: 0入住率:0 CheckMode:“宽容”CheckTolerance: 1.0000 e-04

    评估加速函数的数组作为输入,指定为一个dlarray输入。

    dlX = dlarray ((3、3));海底= accfun (dlX)
    海底= 3×3 dlarray 1.8147 1.9134 1.2785 1.9058 1.6324 1.5469 1.1270 1.0975 1.9575

    评估加速函数的输入。因为加速功能重用缓存的随机噪声值,而不是产生新的随机值,再利用的输出跟踪不同于底层函数的输出。当CheckMode财产的加速功能“宽容”和输出不同,加速函数抛出了一个警告。

    海底= accfun (dlX)
    警告:加速输出不同于底层函数输出。
    海底= 3×3 dlarray 1.8147 1.9134 1.2785 1.9058 1.6324 1.5469 1.1270 1.0975 1.9575

    随机数生成使用“喜欢”选择的兰德函数与一个dlarray对象支持加速度金宝app。使用随机数生成的加速功能,确保使用的函数兰德函数与“喜欢”选项设置为追踪dlarray对象(一个dlarray对象,它取决于一个输入dlarray对象)。

    加速功能my金宝appSupportedFun最后,列出的例子。这个函数my金宝appSupportedFun添加噪声的输入产生噪音使用“喜欢”选择与追踪dlarray对象。

    accfun2 = dlaccelerate (@m金宝appySupportedFun);

    清楚先前缓存的任何使用痕迹clearCache函数。

    clearCache (accfun2)

    检查缓存重用的输出跟踪匹配底层函数的输出,设置CheckMode财产“宽容”

    accfun2。CheckMode =“宽容”;

    评估加速函数两次相同的输入。因为重用缓存的输出匹配底层函数的输出,加速功能不抛出一个警告。

    海底= accfun2 (dlX)
    海底= 3×3 dlarray 1.7922 1.0357 1.6787 1.9595 1.8491 1.7577 1.6557 1.9340 1.7431
    海底= accfun2 (dlX)
    海底= 3×3 dlarray 1.3922 1.7060 1.0462 1.6555 1.0318 1.0971 1.1712 1.2769 1.8235

    检查输出匹配需要额外的处理和增加功能评估所需的时间。检查输出后,设置CheckMode财产“没有”

    accfun1。CheckMode =“没有”;accfun2。CheckMode =“没有”;

    例子函数

    这个函数myUn金宝appsupportedFun生成随机噪声,并将其添加到输入。这个函数不支持加速度不是因为函数产生随机数金宝appdlarray对象。

    函数= myUnsupp金宝apportedFun (dlX)深圳=大小(dlX);噪音=兰德(深圳);= dlX +噪声;结束

    这个函数my金宝appSupportedFun添加噪声的输入产生噪音使用“喜欢”选择与追踪dlarray对象。

    函数= mySupp金宝apportedFun (dlX)深圳=大小(dlX);噪音=兰德(深圳,“喜欢”dlX);= dlX +噪声;结束

    版本历史

    介绍了R2021a