AcceleratedFunction
描述
一个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
启用
- - - - - -国旗来启用跟踪
真正的
(默认)|假
国旗来启用跟踪、指定为真正的
或假
。
数据类型:逻辑
CacheSize
- - - - - -缓存大小
50(默认)|正整数
缓存的大小,指定为一个正整数。
缓存大小对应的最大数量的输入和输出组合缓存。
数据类型:双
HitRate
- - - - - -缓存命中率
标量范围[0100]
这个属性是只读的。
缓存命中率,指定为一个标量范围[0100]。
缓存命中率对应的百分比重用评估。
数据类型:双
入住率
- - - - - -缓存占用
标量范围[0100]
这个属性是只读的。
缓存占用,指定为一个标量范围[0100]。
缓存的缓存占用对应比例使用。
数据类型:双
CheckMode
- - - - - -检查模式
“没有”
(默认)|“宽容”
检查模式,指定为以下之一:
“没有”
——不检查加速的结果。“宽容”
——检查结果和加速底层函数的结果给出的公差范围内CheckTolerance
财产。如果不是在这个公差的值,那么该函数抛出一个警告。
CheckTolerance
- - - - - -检查公差
1的军医
(默认)|积极的标量
检查公差,指定为一个积极的标量。
如果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
Apri esempio
如果dispone di una versione modificata di questo esempio。Desideri aprire questo esempio con le modifiche星期二吗?
第一MATLAB
海脂肪clic苏联合国collegamento切corrisponde questo第一MATLAB:
Esegui il第一inserendolo所以nella隙缝di第一MATLAB。我浏览器web非supportano金宝app comandi MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。