Softmax交叉熵损失¶
SoftmaxCrossEntropyLoss - 13¶
版本¶
域名:
mainsince_version:
13function:
Truesupport_level:
SupportType.COMMON形状推断:
True
此版本的运算符自版本13起可用。
摘要¶
衡量‘scores’和‘labels’之间softmax交叉熵的损失函数。 此操作符首先计算一个与标签输入形状相同的损失张量。 如果输入是形状为(N, C)的2-D张量,损失张量可能是一个N元素向量L = (l_1, l_2, …, l_N)。 如果输入是形状为(N, C, D1, D2, …, Dk)的N-D张量, 损失张量L可能具有(N, D1, D2, …, Dk)的形状,并且L[i,][j_1][j_2]…[j_k]表示L中的一个标量元素。 在L可用之后,此操作符可以选择性地执行一个归约操作。
形状(scores): (N, C) 其中 C 是类别数量,或者 (N, C, D1, D2,…, Dk),在 K 维损失的情况下 K >= 1。
形状(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'):应用于损失的类型:无、求和、平均(默认)。‘无’:不应用任何缩减,‘求和’:输出将被求和。‘平均’:输出的总和将除以输出中的元素数量。
输入¶
在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:
手动为每个类别分配的重新缩放权重。如果提供,它必须是一个1D张量,为每个类别分配权重。否则,它将被视为所有类别权重均为1。
输出¶
在1和2之间输出。
输出 (异构) - 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¶
版本¶
域名:
mainsince_version:
12function:
Truesupport_level:
SupportType.COMMON形状推断:
True
此版本的运算符自版本12起可用。
摘要¶
衡量‘scores’和‘labels’之间softmax交叉熵的损失函数。 此操作符首先计算一个与标签输入形状相同的损失张量。 如果输入是形状为(N, C)的2-D张量,损失张量可能是一个N元素向量L = (l_1, l_2, …, l_N)。 如果输入是形状为(N, C, D1, D2, …, Dk)的N-D张量, 损失张量L可能具有(N, D1, D2, …, Dk)的形状,并且L[i,][j_1][j_2]…[j_k]表示L中的一个标量元素。 在L可用之后,此操作符可以选择性地执行一个归约操作。
形状(scores): (N, C) 其中 C 是类别数量,或者 (N, C, D1, D2,…, Dk),在 K 维损失的情况下 K >= 1。 形状(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'):应用于损失的类型:无、求和、平均(默认)。‘无’:不应用任何缩减,‘求和’:输出将被求和。‘平均’:输出的总和将除以输出中的元素数量。
输入¶
在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:
手动为每个类别分配的重新缩放权重。如果提供,它必须是一个1D张量,为每个类别分配权重。否则,它将被视为所有类别权重均为1。
输出¶
在1和2之间输出。
输出 (异构) - T:
加权损失的浮点张量。如果 reduction 是 'none',则其形状为 [batch_size],或者在 K 维损失的情况下为 [batch_size, D1, D2, ..., Dk]。否则,它是一个标量。
log_prob(可选,异构)- T:
对数概率张量。如果softmax的输出是prob,则其值为log(prob)。
类型约束¶
T 在 (
tensor(double),tensor(float),tensor(float16)) 中:将输入和输出类型限制为浮点张量。
Tind 在 (
tensor(int32),tensor(int64)) 中:将目标限制为整数类型