crossentropy
分类任务的交叉熵损失
描述
交叉熵运算计算单标签和多标签分类任务中网络预测值与目标值之间的交叉熵损失。
的crossentropy
函数计算预测和目标之间的交叉熵损失,表示为dlarray
数据。使用dlarray
对象允许对维度进行标记,从而使处理高维数据更加容易。方法标识哪些维度对应于空间、时间、通道和批处理维度“S”
,“T”
,“C”
,“B”
标签,分别。对于未指定的和其他维度,请使用“U”
标签。为dlarray
对象函数对特定维度进行操作时,可以通过格式化dlarray
对象直接调用,或使用DataFormat
选择。
请注意
计算a内的交叉熵损失layerGraph
对象或层
数组,用于trainNetwork
功能,使用classificationLayer
.
返回格式化之间的分类交叉熵损失损失
= crossentropy (Y
,目标
)dlarray
对象Y
包含预测和目标值目标
用于单标签分类任务。输出损失
是未格式化的标量吗dlarray
标量。
对于未格式化的输入数据,请使用“DataFormat”
选择。
还指定维度格式损失
= crossentropy (___、“DataFormat”FMT)FMT
当Y
不是格式化的dlarray
.
例子
单标签分类的交叉熵损失
为10个班级的12个观察结果创建一个预测分数数组。
numClasses = 10;numObservations = 12;Y = rand(numClasses,numObservations);ly = dlarray(Y,“CB”);dlY = softmax(dlY);
查看预测分数的大小和格式。
大小(海底)
ans =1×210 12
dim(海底)
ans = 'CB'
创建一个编码为单一热点向量的目标数组。
label = randi(numClasses,[1 numObservations]);Targets = onehotencode(labels,1,“类名”1: numClasses);
查看目标器的大小。
大小(目标)
ans =1×210 12
计算预测和目标之间的交叉熵损失。
损失=交叉熵(dd,靶)
损失= 1x1 dlarray 2.3343
多标签分类的交叉熵损失
为10个班级的12个观察结果创建一个预测分数数组。
numClasses = 10;numObservations = 12;Y = rand(numClasses,numObservations);ly = dlarray(Y,“CB”);
查看预测分数的大小和格式。
大小(海底)
ans =1×210 12
dim(海底)
ans = 'CB'
创建一个目标的随机数组,编码为0和1的数字数组。每个观察可以有多个类。
targets = rand(numClasses,numObservations) > 0.75;目标=单个(目标);
查看目标器的大小。
大小(目标)
ans =1×210 12
计算预测和目标之间的交叉熵损失。若要指定多标签分类的交叉熵损失,请设置“TargetCategories”
选项“独立”
.
损失= crossentropy(d,目标,“TargetCategories”,“独立”)
损失= 1x1单美元9.8853
加权交叉熵损失
为10个班级的12个观察结果创建一个预测分数数组。
numClasses = 10;numObservations = 12;Y = rand(numClasses,numObservations);ly = dlarray(Y,“CB”);dlY = softmax(dlY);
查看预测分数的大小和格式。
大小(海底)
ans =1×210 12
dim(海底)
ans = 'CB'
创建一个编码为单一热点向量的目标数组。
label = randi(numClasses,[1 numObservations]);Targets = onehotencode(labels,1,“类名”1: numClasses);
查看目标器的大小。
大小(目标)
ans =1×210 12
使用向量类权重计算预测和目标之间的加权交叉熵损失。的权重格式加州大学的
(未指定,通道)使用“WeightsFormat”
选择。
weights = rand(1,numClasses);损失= crossentropy(dd,目标,权重,“WeightsFormat”,加州大学的)
损失= 1x1 dlarray 1.1261
输入参数
Y
- - - - - -预测
dlarray
|数字数组
预测,指定为格式化的dlarray
,一个未格式化的dlarray
,或数字数组。当Y
不是格式化的dlarray
方法指定尺寸格式DataFormat
选择。
如果Y
是一个数值数组,目标
一定是dlarray
.
目标
- - - - - -目标分类标签
dlarray
|数字数组
目标分类标签,指定为格式化或非格式化dlarray
或者一个数字数组。
指定目标为一个数组,该数组包含具有相同大小和格式的一次性编码标签Y
.例如,如果Y
是一个numObservations
——- - - - - -numClasses
数组,然后目标(n,我)
如果观察到= 1n
属于阶级我
目标(n,我)
否则= 0。
如果目标
是格式化的dlarray
,则其格式必须与的格式相同Y
,或与DataFormat
如果Y
未格式化。
如果目标
是未格式化的dlarray
或数值数组,则函数应用的格式Y
或者是DataFormat
来目标
.
提示
格式化dlarray
对象自动排列底层数据的维度,使其具有顺序“S”
(空间),“C”
(通道),“B”
(批处理),“T”
(时间),然后“U”
(不明)。保证尺寸Y
而且目标
是一致的,当Y
是格式化的dlarray
,也指定目标
作为格式化的dlarray
.
权重
- - - - - -权重
dlarray
|数字数组
权重,指定为dlarray
或者一个数字数组。
要指定类的权重,请用“C”
(通道)尺寸,尺寸与“C”
(通道)维度的X
.指定“C”
(通道)维度的类权重使用格式化的dlarray
对象或使用“WeightsFormat”
选择。
要指定观察权值,请用“B”
(批处理)尺寸与“B”
的(批)维度Y
.指定“B”
(批处理)维度的类权重,使用格式化的dlarray
对象或使用“WeightsFormat”
选择。
若要独立地为输入的每个元素指定权重,请将权重指定为大小相同的数组Y
.在这种情况下,如果权重
不是格式化的dlarray
对象,则函数使用与Y
.方法指定权重格式“WeightsFormat”
选择。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“TargetCategories”、“独立”、“DataFormat”、“CB”
评估多标签分类任务的交叉熵损失,并指定输入数据的维度顺序为“CB”
TargetCategories
- - - - - -分类任务的类型
“独家”
(默认)|“独立”
分类任务的类型,指定为逗号分隔的对,由“TargetCategories”
和以下其中之一:
“独家”
-单标签分类。预测中的每一个观察结果Y
只属于一个类别。函数计算指定的单个类别的目标值之间的损失目标
并进行了相应的预测Y
,除以观察次数的平均值。“独立”
—多标签分类。预测中的每一个观察结果Y
可以分配给一个或多个独立的类别。函数计算指定的每个类别之间的损失之和目标
和预测Y
对于这些类别,取观察次数的平均值。这种类型的分类任务的交叉熵损失也称为二元交叉熵损失。
面具
- - - - - -掩码,指示要包含哪些元素以进行损耗计算
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
- - - - - -权重的维度顺序
特征向量|字符串标量
算法
叉损失
对于每个元素Yj输入的crossentropy
函数使用公式计算相应的交叉熵元素的损失值
在哪里Tj是否对应的目标值为Yj.
为了将损失值减少为一个标量,该函数使用公式减少按元素计算的损失
在哪里N是归一化因子,米j是否元素的掩码值j,wj元素的权重值是多少j.
如果不选择减少损失,则该函数直接对损失值应用掩码和权重:
这个表显示了不同任务的损失公式。
任务 | 描述 | 损失 |
---|---|---|
单标牌分类 | 互斥类的交叉熵损失。当观察结果必须只有一个标签时,这很有用。 |
在哪里N而且K分别是观察的数量和类的数量。 |
多标记分类 | 独立类的交叉熵损失。当观察结果可以有多个标签时,这很有用。 |
在哪里N而且K分别是观察数和类数。 |
加权类的单标签分类 | 类权的交叉熵损失。这对于包含不平衡类的数据集很有用。 |
在哪里N而且K观察和类的数量分别是和吗w我表示类的权重我. |
Sequence-to-sequence分类 | 带有掩模时间步的交叉熵损失。这对于忽略与填充数据对应的损失值非常有用。 |
在哪里N,年代,K观察的数量,时间步长和类,米nt表示时间步长的掩码值t的观察n. |
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
当以下输入参数中至少有一个是
gpuArray
或者一个dlarray
使用类型的基础数据gpuArray
,该函数运行在GPU上:Y
目标
权重
“面具”
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2019b中引入
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。WebブラウザはMATLABコマンドをサポトしていません。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。