主要内容

crossentropy

叉损失分类任务

描述

叉操作计算网络预测和目标之间的叉损失值单标牌和多标记分类任务。

crossentropy损失函数计算叉之间的预测和目标表示为dlarray数据。使用dlarray更易于处理高维数据的对象允许您标签的尺寸。例如,您可以标签尺寸对应于空间,时间,频道,使用批处理维度“S”,“T”,“C”,“B”标签,分别。未指明的和其他维度,使用“U”标签。为dlarray对象的函数操作特定的尺寸,你可以指定尺寸标签的格式dlarray直接对象,或通过使用DataFormat选择。

请注意

在一个计算熵损失layerGraph对象或数组的使用trainNetwork功能,使用classificationLayer

例子

损失= crossentropy (海底,目标)返回格式化的之间的分类熵损失dlarray对象海底包含预测和目标的价值观目标对于单标牌分类任务。输出损失是一个非格式化标量dlarray标量。

无格式的输入数据,使用“DataFormat”选择。

损失= crossentropy (海底,目标,权重)重量适用于计算损失值。使用这个语法重量的贡献类、观察、区域,或单个元素的损失计算的输入值。

损失= crossentropy (___、“DataFormat”FMT)还指定了尺寸格式FMT海底不是一个格式化的dlarray

损失= crossentropy (___,名称,值)指定选项使用一个或多个名称-值对参数除了输入参数在以前的语法。例如,“TargetCategories”、“独立”计算的熵损失多标记分类任务。

例子

全部折叠

创建一个数组的预测成绩12观察10类。

numClasses = 10;numObservations = 12;Y =兰德(numClasses numObservations);海底= dlarray (Y,“CB”);海底= softmax(海底);

视图的大小和格式预测分数。

大小(海底)
ans =1×210 12
dim(海底)
ans =“CB”

创建一个数组的目标编码为一个炎热的向量。

标签=兰迪(numClasses [1 numObservations]);目标= onehotencode(标签1“类名”1:numClasses);

视图的大小的目标。

大小(目标)
ans =1×210 12

计算熵损失预测和目标。

损失= crossentropy(海底目标)
损失= 1 x1 dlarray 2.3343

创建一个数组的预测成绩12观察10类。

numClasses = 10;numObservations = 12;Y =兰德(numClasses numObservations);海底= dlarray (Y,“CB”);

视图的大小和格式预测分数。

大小(海底)
ans =1×210 12
dim(海底)
ans =“CB”

创建一个随机的一系列目标编码为0和1的数字数组。每个观测可以有多个类。

目标=兰德(numClasses numObservations) > 0.75;目标=单(目标);

视图的大小的目标。

大小(目标)
ans =1×210 12

计算熵损失预测和目标。指定叉损失多标记分类设置“TargetCategories”选项“独立”

损失= crossentropy(海底,目标,“TargetCategories”,“独立”)
损失= 1 x1单一dlarray 9.8853

创建一个数组的预测成绩12观察10类。

numClasses = 10;numObservations = 12;Y =兰德(numClasses numObservations);海底= dlarray (Y,“CB”);海底= softmax(海底);

视图的大小和格式预测分数。

大小(海底)
ans =1×210 12
dim(海底)
ans =“CB”

创建一个数组的目标编码为一个炎热的向量。

标签=兰迪(numClasses [1 numObservations]);目标= onehotencode(标签1“类名”1:numClasses);

视图的大小的目标。

大小(目标)
ans =1×210 12

计算加权熵损失预测和目标使用向量类之间的权重。指定一个权值的格式加州大学的(未指明的频道)使用“WeightsFormat”选择。

重量=兰德(1、numClasses);损失= crossentropy(海底、目标、重量、“WeightsFormat”,加州大学的)
损失= 1 x1 dlarray 1.1261

输入参数

全部折叠

预测,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组。当海底不是一个格式化的dlarray,你必须指定尺寸格式使用DataFormat选择。

如果海底是一个数值数组,目标必须是一个dlarray

目标分类标签,指定为一个格式化的或未格式化dlarray或数字数组。

目标指定为一个数组,其中包含一个炎热的编码标签与相同的大小和格式海底。例如,如果海底是一个numObservations——- - - - - -numClasses数组,然后目标(n,我)= 1如果观察n属于类目标(n,我)= 0。

如果目标是一个格式化的dlarray,那么它的格式必须相同的格式海底,或者一样DataFormat如果海底未格式化。

如果目标是一个非格式化dlarray或数值数组,那么函数应用的格式海底或者的价值DataFormat目标

提示

格式化dlarray底层数据对象自动排列的尺寸有秩序“S”(空间),“C”(通道),“B”(批处理),“T”(时间),然后“U”(不明)。确保的尺寸海底目标是一致的,当海底是一个格式化的dlarray还,指定目标作为一个格式化的dlarray

重量、指定为一个dlarray或数字数组。

指定类的权重,指定一个向量的“C”(频道)尺寸大小匹配“C”(通道)的维度dlX。指定“C”(频道)类的维度权重通过使用一个格式化的dlarray对象或使用“WeightsFormat”选择。

指定观察权重,指定一个向量的“B”(批)尺寸大小匹配“B”(批)的维度海底。指定“B”(批)类的维度权重通过使用一个格式化的dlarray对象或使用“WeightsFormat”选择。

指定独立输入的重量为每个元素,指定权重数组的大小一样海底。在这种情况下,如果权重不是一个格式化的dlarray函数对象,然后使用相同的格式海底。另外,指定权重格式使用“WeightsFormat”选择。

名称-值参数

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:“TargetCategories”、“独立”、“DataFormat”、“CB”损失评估叉多标记分类任务和指定的尺寸顺序输入数据“CB”

类型的分类任务,指定为逗号分隔组成的“TargetCategories”和下列之一:

  • “独家”——单标牌分类。每个观测的预测海底只分配给一个类别。函数计算之间的损失为单一类别指定的目标价值目标和相应的预测海底,平均观测的数量。

  • “独立”——多标记分类。每个观测的预测海底可以分配给一个或多个独立的类别。函数计算指定的每个类别之间损失的总和目标和预测海底对于那些类别,平均在观测的数量。叉损失为这种类型的分类任务也被称为二叉叉的损失。

面具表明哪些元素为损失计算,包括指定的作为dlarray对象,一个逻辑数组,或数字数组大小一样海底

功能包括和不包括元素输入数据的损失计算面具当对应的值是1和0,分别。

默认值是一个逻辑数组的大小一样海底

提示

格式化dlarray底层数据对象自动排列的尺寸这个顺序:“S”(空间),“C”(通道),“B”(批处理),“T”(时间)“U”(不明)。例如,dlarray对象自动排列的尺寸数据与格式“TSCSBS”有格式“SSSCBT”

确保的尺寸海底,当面具是一致的海底是一个格式化的dlarray,还指定格式化的面具dlarray

模式减少损失值的数组,指定为以下之一:

  • “和”——和所有损失值的数组中的元素。在这种情况下,输出损失是标量。

  • “没有”——不减少损失值的数组。在这种情况下,输出损失是一个非格式化dlarray对象具有相同的大小海底

除数正常化时减少损失减少“和”,指定为以下之一:

  • “批大小”——正常损失除以观察的数量dlX

  • “所有元素”——正常损失除以它的元素的数量dlX

  • “还有面具”——正常损失损失值除以包含指定的元素的数量为每个独立观察面具。要使用这个选项,您必须指定一个面具使用面具选择。

  • “没有”——不正常损失。

维度的非格式化输入数据,指定为一个特征向量或字符串标量FMT为每个维度的数据提供一个标签。

当你指定的格式dlarray对象,每个字符为每个维度的数据和提供一个标签必须是下列之一:

  • “S”——空间

  • “C”——频道

  • “B”批处理(例如,样品和观察)

  • “T”时间(例如,时间序列的步骤)

  • “U”——未指明的

您可以指定多个维度标签“S”“U”。您可以使用标签“C”,“B”,“T”最多一次。

您必须指定DataFormat当输入数据不是一个格式化的dlarray

数据类型:字符|字符串

维度的权重,指定为一个特征向量或字符串标量,它提供了一个标签为每个维度的权重。

当你指定的格式dlarray对象,每个字符为每个维度的数据和提供一个标签必须是下列之一:

  • “S”——空间

  • “C”——频道

  • “B”批处理(例如,样品和观察)

  • “T”时间(例如,时间序列的步骤)

  • “U”——未指明的

您可以指定多个维度标签“S”“U”。您可以使用标签“C”,“B”,“T”最多一次。

您必须指定WeightsFormat权重是一个数值向量和海底有两个或两个以上的nonsingleton维度。

如果权重不是一个向量,或都有权重海底向量,那么默认值的WeightsFormat的格式是一样的吗海底

数据类型:字符|字符串

输出参数

全部折叠

叉的损失,作为一个非格式化返回dlarray。输出损失是一个非格式化dlarray与相同的底层数据类型作为输入海底

的大小损失取决于“还原”选择。

算法

全部折叠

叉损失

为每个元素Yj输入的crossentropy函数计算相应的叉element-wise损失值使用公式

损失 j = T j ln Y j + ( 1 T j ) ln ( 1 Y j ) ,

在哪里Tj是对应的目标值Yj

减少损失一个标量值,函数然后减少element-wise损失使用公式

损失 = 1 N j j w j 损失 j ,

在哪里N是归一化因子,j掩码值的元素吗j,wj元素的重量值吗j

如果你不选择来减少损失,那么函数面具和权重值直接损失:

损失 j * = j w j 损失 j

此表显示了不同的任务损失公式。

任务 描述 损失
单标牌分类 叉为互斥类损失。这是非常有用当观测必须只有一个标签。

损失 = 1 N n = 1 N = 1 K T n ln Y n ,

在哪里NK观察的数量,分别和类。

多标记分类 为独立类熵损失。这是观察可以有多个标签时有用。

损失 = 1 N n = 1 N = 1 K ( T n 日志 ( Y n ) + ( 1 T n ) 日志 ( 1 Y n ) ) ,

在哪里NK分别观察和类的数量。

单标牌与加权类分类 叉类体重的损失。这是非常有用的对不平衡数据集类。

损失 = 1 N n = 1 N = 1 K w T n ln Y n ,

在哪里NK分别观察和类的数量,然后呢w表示类的重量

Sequence-to-sequence分类 戴面具的时间步长叉损失。这是用于忽略损失值,对应的数据。

损失 = 1 N n = 1 N t = 1 年代 n t = 1 K T n t ln Y n t ,

在哪里N,年代,K观察的数量、时间步长和类,nt表示时间步的掩码值t的观察n

扩展功能

介绍了R2019b