休伯
回归任务的Huber损失
描述
Huber操作计算回归任务的网络预测和目标值之间的Huber损失。当“TransitionPoint”
选项是1,这也被称为光滑的l1损失.
的休伯
函数计算Huber损失dlarray
数据。使用dlarray
对象允许您标记维度,从而更容易处理高维数据。属性标记哪些维度对应于空间、时间、通道和批处理维度“S”
,“T”
,“C”
,“B”
标签,分别。对于未指定的维度和其他维度,使用“U”
标签。为dlarray
对象的函数在特定维度上操作时,可以通过格式化dlarray
对象,或者使用DataFormat
选择。
返回格式化后的数据之间的Huber损失损失
=胡贝尔(Y
,目标
)dlarray
对象Y
包含预测和目标值目标
用于回归任务。输入Y
是格式化的dlarray
.输出损失
是未格式化的dlarray
标量。
对于未格式化的输入数据,使用“DataFormat”
选择。
还指定维度格式损失
=胡贝尔(___、“DataFormat”FMT)FMT
当Y
不是格式化的dlarray
.
例子
Huber损失
为10个回答中的12个观察结果创建一个预测数组。
numResponses = 10;numObservations = 12;Y = rand(numResponses,numObservations);ly = darray (Y,“CB”);
查看预测的大小和格式。
大小(海底)
ans =1×210 12
dim(海底)
ans = 'CB'
创建一个随机目标数组。
targets = rand(numResponses,numObservations);
查看目标的大小。
大小(目标)
ans =1×210 12
计算预测和目标之间的Huber损失。
损失=目标
损失= 1x1 dlarray 0.7374
填充序列的掩盖Huber损失
在10个响应中为12个长度不同的序列创建预测和目标数组。
numResponses = 10;numObservations = 12;maxSequenceLength = 15;sequenceLengths = randi(maxSequenceLength,[1 numObservations]);Y = cell(numObservations,1);target = cell(numObservations,1);为i = 1:numObservations Y{i} = rand(numResponses,sequenceLengths(i));targets{i} = rand(numResponses,sequenceLengths(i));结束
查看预测和目标的单元格阵列。
Y
Y =12×1单元格数组{10x13双}{10x14双}{10x14双}{10x10双}{10x2双}{10x5双}{10x9双}{10x15双}{10x15双}{10x3双}{10x15双}
目标
目标=12×1单元格数组{10x13双}{10x14双}{10x14双}{10x10双}{10x2双}{10x5双}{10x9双}{10x15双}{10x15双}{10x3双}{10x15双}
将预测序列和目标序列填充在二维中padsequences
函数,并返回相应的掩码。
[Y,mask] = padsequences(Y,2);Targets = padsequences(Targets,2);
将填充序列转换为dlarray
带格式的“施”
(通道,时间,批次)。因为格式化dlarray
对象自动排序维度,保持目标的维度和掩码一致,同时将它们转换为格式化的dlarray
具有相同格式的对象。
ly = darray (Y,“施”);目标= dlarray(目标,“施”);蒙版= dlarray(蒙版,“施”);
查看预测分数、目标和掩码的大小。
大小(海底)
ans =1×310 12 15
大小(目标)
ans =1×310 12 15
大小(面具)
ans =1×310 12 15
计算预测和目标之间的Huber损失。若要防止从填充中计算的损耗值导致损耗,请设置“面具”
属性返回的掩码padsequences
函数。
损失= huber,目标,“面具”面具)
损失= 1x1 dlarray 8.1834
输入参数
Y
- - - - - -预测
dlarray
|数字数组
预测,指定为格式化的dlarray
,一个未格式化的dlarray
,或数值数组。当Y
不是格式化的dlarray
时,必须使用DataFormat
选择。
如果Y
是数值数组,目标
一定是dlarray
.
目标
- - - - - -目标反应
dlarray
|数字数组
目标响应,指定为格式化或非格式化dlarray
或者一个数字数组。
的每个维度的大小目标
必须匹配相应尺寸的尺寸吗Y
.
如果目标
是格式化的dlarray
,则其格式必须与的格式一致Y
,或与DataFormat
如果Y
未格式化。
如果目标
是未格式化的dlarray
或数值数组,则函数应用的格式Y
或者是DataFormat
来目标
.
提示
格式化dlarray
对象自动排列底层数据的维度以使其具有顺序“S”
(空间),“C”
(通道),“B”
(批处理),“T”
(时间),然后“U”
(不明)。保证尺寸Y
而且目标
一致,当Y
是格式化的dlarray
,也指定目标
作为格式化的dlarray
.
权重
- - - - - -权重
dlarray
|数字数组
权重,指定为adlarray
或者一个数字数组。
要指定响应权重,请使用“C”
(通道)尺寸与尺寸匹配“C”
(通道)的尺寸X
.指定“C”
(通道)维度的响应权重使用格式化dlarray
对象或使用“WeightsFormat”
选择。
要指定观测权重,请使用“B”
(批)尺寸与尺寸匹配“B”
(批)尺寸Y
.指定“B”
(批处理)维的类权重使用格式化dlarray
对象或使用“WeightsFormat”
选择。
若要单独为输入的每个元素指定权重,请将权重指定为大小相同的数组Y
.在这种情况下,如果权重
不是格式化的dlarray
对象,则该函数使用与Y
.方法指定权重格式“WeightsFormat”
选择。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“NormalizationFactor”、“所有元素的
指定通过将减少的损耗除以输入元素的数量来规范化损耗
TransitionPoint
- - - - - -休伯损失转换为线性函数的点
1(默认)|积极的标量
休伯损失从二次函数转变为线性函数的点,以逗号分隔的对表示,由“TransitionPoint”
一个正标量。
当“TransitionPoint”
等于1,也就是光滑的l1损失.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
面具
- - - - - -掩码,指示要包括哪些元素进行损失计算
dlarray
|逻辑阵列|数字数组
掩码,指示要包括哪些元素进行损失计算,指定为dlarray
对象、逻辑数组或具有相同大小的数值数组Y
.
当掩码中的对应值分别为1和0时,该函数包含和排除输入数据中的元素以进行损失计算。
如果面具
是格式化的dlarray
对象的格式,则其格式必须与Y
.如果面具
不是格式化的dlarray
对象,则该函数使用与Y
.
如果您指定DataFormat
选项,则该函数也使用指定的掩码格式。
的每个维度的大小面具
必须匹配相应尺寸的尺寸吗Y
.默认值是1的逻辑数组。
提示
格式化dlarray
对象会自动排列底层数据的维数,使其排列顺序如下:“S”
(空间),“C”
(通道),“B”
(批处理),“T”
(时间)“U”
(不明)。例如,dlarray
对象根据格式自动排列数据的维度“TSCSBS”
要有格式“SSSCBT”
.
保证尺寸Y
和面具是一致的,当Y
是格式化的dlarray
,也指定掩码为格式化的dlarray
.
DataFormat
- - - - - -未格式化数据的维度顺序
特征向量|字符串标量
未格式化输入数据的维度顺序,指定为字符向量或字符串标量FMT
它为数据的每个维度提供了一个标签。
的格式时dlarray
对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:
“S”
——空间“C”
——频道“B”
-批次(例如,样品和观察)“T”
-时间(例如序列的时间步长)“U”
——未指明的
您可以指定多个有标记的维度“S”
或“U”
.你可以使用标签“C”
,“B”
,“T”
最多一次。
您必须指定DataFormat
当输入数据未被格式化时dlarray
.
数据类型:字符
|字符串
WeightsFormat
- - - - - -权重的维数顺序
特征向量|字符串标量
输出参数
算法
Huber损失
对于每个元素Yj的输入休伯
函数使用公式计算相应的元素损耗值
在哪里Tj预测是否有相应的目标值Yj而且 是损失从二次函数转换为线性函数的过渡点。
当过渡点为1时,这也称为光滑的l1损失.
为了将损失值减少为标量,函数然后使用公式减少按元素计算的损失
在哪里N是归一化因子,米j元素的掩码值是j,wj是元素的权重值吗j.
如果不选择减少损失,则函数将掩码和权重直接应用于损失值:
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
当以下输入参数中至少有一个是
gpuArray
或者一个dlarray
类型的底层数据gpuArray
,此函数在GPU上运行:Y
目标
权重
“面具”
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
R2021a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。