SoftmaxCrossEntropyLoss¶
SoftmaxCrossEntropyLoss - 13¶
版本¶
域:
main
自版本:
13
函数:
True
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符已自版本 13 起可用。
摘要¶
测量“分数”和“标签”之间的 softmax 交叉熵的损失函数。此运算符首先计算一个损失张量,其形状与标签输入相同。如果输入是形状为 (N, C) 的二维张量,则损失张量可能是一个 N 元素向量 L = (l_1, l_2, …, l_N)。如果输入是形状为 (N, C, D1, D2, …, Dk) 的 N 维张量,则损失张量 L 可能具有 (N, D1, D2, …, Dk) 作为其形状,并且 L[i,][j_1][j_2]…[j_k] 表示 L 中的标量元素。在 L 可用后,此运算符可以选择执行一个缩减运算符。
shape(scores): (N, C),其中 C 是类的数量,或 (N, C, D1, D2,…, Dk),在 K 维损失的情况下,K >= 1。
shape(labels): (N),其中每个值都是 0 <= labels[i] <= C-1,或 (N, D1, D2,…, Dk),在 K 维损失的情况下,K >= 1。
一个样本的损失,l_i,可以按如下方式计算
l[i][d1][d2]...[dk] = -y[i][c][d1][d2]..[dk], where i is the index of classes.
或
l[i][d1][d2]...[dk] = -y[i][c][d1][d2]..[dk] * weights[c], if 'weights' is provided.
当标签值等于 ignore_index 时,损失为零。
l[i][d1][d2]...[dk] = 0, when labels[n][d1][d2]...[dk] = ignore_index
其中
p = Softmax(scores)
y = Log(p)
c = labels[i][d1][d2]...[dk]
最后,L 可选地进行缩减
如果 reduction = 'none',则输出为形状为 (N, D1, D2, …, Dk) 的 L。
如果 reduction = 'sum',则输出为标量:Sum(L)。
如果 reduction = 'mean',则输出为标量:ReduceMean(L),或者如果提供了权重:
ReduceSum(L) / ReduceSum(W)
,其中张量 W 的形状为(N, D1, D2, ..., Dk)
并且W[n][d1][d2]...[dk] = weights[labels[i][d1][d2]...[dk]]
。
属性¶
ignore_index - INT :
指定一个被忽略的并且不贡献于输入梯度的目标值。这是一个可选值。
reduction - STRING(默认值为
'mean'
)要应用于损失的缩减类型:none、sum、mean(默认)。'none':不应用缩减,'sum':输出将被求和。'mean':输出的总和将除以输出中的元素数量。
输入¶
2 到 3 个输入。
scores(异构) - T
预测的输出,形状为 [batch_size, class_size],或 [batch_size, class_size, D1, D2 , …, Dk],其中 K 是维数。
labels(异构) - Tind
地面真实输出张量,形状为 [batch_size],或 [batch_size, D1, D2, …, Dk],其中 K 是维数。标签元素值应在 [0, C) 范围内。如果指定了 ignore_index,则它可能具有 [0, C) 范围之外的值,并且标签值应在 [0, C) 范围内或具有 ignore_index 值。
weights(可选,异构) - T
赋予每个类的手动重新缩放权重。如果给出,它必须是一个一维张量,为每个类分配权重。否则,它被视为具有全一的张量。
输出¶
1 到 2 个输出。
output(异构) - T
加权损失浮点数张量。如果 reduction 是 'none',则它具有 [batch_size] 的形状,或者在 K 维损失的情况下具有 [batch_size, D1, D2, …, Dk] 的形状。否则,它是一个标量。
log_prob(可选,异构) - T
对数概率张量。如果 softmax 的输出是 prob,则其值为 log(prob)。
类型约束¶
T 在(
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)中将输入和输出类型限制为浮点张量。
Tind 在(
tensor(int32)
,tensor(int64)
)中将目标限制为整数类型
SoftmaxCrossEntropyLoss - 12¶
版本¶
域:
main
自版本:
12
函数:
True
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符已自版本 12 起可用。
摘要¶
测量“分数”和“标签”之间的 softmax 交叉熵的损失函数。此运算符首先计算一个损失张量,其形状与标签输入相同。如果输入是形状为 (N, C) 的二维张量,则损失张量可能是一个 N 元素向量 L = (l_1, l_2, …, l_N)。如果输入是形状为 (N, C, D1, D2, …, Dk) 的 N 维张量,则损失张量 L 可能具有 (N, D1, D2, …, Dk) 作为其形状,并且 L[i,][j_1][j_2]…[j_k] 表示 L 中的标量元素。在 L 可用后,此运算符可以选择执行一个缩减运算符。
shape(scores): (N, C),其中 C 是类的数量,或 (N, C, D1, D2,…, Dk),在 K 维损失的情况下,K >= 1。shape(labels): (N),其中每个值都是 0 <= labels[i] <= C-1,或 (N, D1, D2,…, Dk),在 K 维损失的情况下,K >= 1。
一个样本的损失,l_i,可以按如下方式计算:l[i][d1][d2]…[dk] = -y[i][c][d1][d2]…[dk],其中 i 是类的索引。或者 l[i][d1][d2]…[dk] = -y[i][c][d1][d2]…[dk] * weights[c],如果提供了“weights”。
当标签值等于 ignore_index 时,损失为零。l[i][d1][d2]…[dk] = 0,当 labels[n][d1][d2]…[dk] = ignore_index 时
其中:p = Softmax(scores) y = Log(p) c = labels[i][d1][d2]…[dk]
最后,L 可选地进行缩减:如果 reduction = 'none',则输出为形状为 (N, D1, D2, …, Dk) 的 L。如果 reduction = 'sum',则输出为标量:Sum(L)。如果 reduction = 'mean',则输出为标量:ReduceMean(L),或者如果提供了权重:ReduceSum(L) / ReduceSum(W),其中张量 W 的形状为 (N, D1, D2, …, Dk) 并且 W[n][d1][d2]…[dk] = weights[labels[i][d1][d2]…[dk]]。
属性¶
ignore_index - INT :
指定一个被忽略的并且不贡献于输入梯度的目标值。这是一个可选值。
reduction - STRING(默认值为
'mean'
)要应用于损失的缩减类型:none、sum、mean(默认)。'none':不应用缩减,'sum':输出将被求和。'mean':输出的总和将除以输出中的元素数量。
输入¶
2 到 3 个输入。
scores(异构) - T
预测的输出,形状为 [batch_size, class_size],或 [batch_size, class_size, D1, D2 , …, Dk],其中 K 是维数。
labels(异构) - Tind
地面真实输出张量,形状为 [batch_size],或 [batch_size, D1, D2, …, Dk],其中 K 是维数。标签元素值应在 [0, C) 范围内。如果指定了 ignore_index,则它可能具有 [0, C) 范围之外的值,并且标签值应在 [0, C) 范围内或具有 ignore_index 值。
weights(可选,异构) - T
赋予每个类的手动重新缩放权重。如果给出,它必须是一个一维张量,为每个类分配权重。否则,它被视为具有全一的张量。
输出¶
1 到 2 个输出。
output(异构) - T
加权损失浮点数张量。如果 reduction 是 'none',则它具有 [batch_size] 的形状,或者在 K 维损失的情况下具有 [batch_size, D1, D2, …, Dk] 的形状。否则,它是一个标量。
log_prob(可选,异构) - T
对数概率张量。如果 softmax 的输出是 prob,则其值为 log(prob)。
类型约束¶
T in (
tensor(double)
,tensor(float)
,tensor(float16)
)将输入和输出类型限制为浮点张量。
Tind 在(
tensor(int32)
,tensor(int64)
)中将目标限制为整数类型