SoftmaxCrossEntropyLoss¶
SoftmaxCrossEntropyLoss - 13¶
版本¶
網域:
main
since_version:
13
function:
True
support_level:
SupportType.COMMON
形狀推斷:
True
此運算符版本自版本 13起可用。
摘要¶
衡量 ‘scores’ 和 ‘labels’ 之間 softmax 交叉熵的損失函數。此運算符首先計算一個形狀與 labels 輸入相同的損失張量。如果輸入是形狀為 (N, C) 的 2 維,則損失張量可能是 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’,則輸出為 L,其形狀為 (N, D1, D2, …, Dk)。
如果 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
ground truth 輸出張量,形狀為 [batch_size] 或 [batch_size, D1, D2, …, Dk],其中 K 是維度數。Labels 元素的值應在 [0, C) 的範圍內。如果指定 ignore_index,它可以有一個超出 [0, C) 的值,且標籤值應在 [0, C) 的範圍內或具有 ignore_index 的值。
weights (選用,異質) - T
手動調整每個類別權重的權重。如果提供,它必須是 1D 張量,將權重指派給每個類別。否則,它會被視為具有所有 1。
輸出¶
介於 1 和 2 個輸出之間。
output (異質) - T
加權損失浮點數張量。如果縮減為 ‘none’,則其形狀為 [batch_size] 或 [batch_size, D1, D2, …, Dk] (對於 K 維損失)。否則,它是一個純量。
log_prob (選用,異質) - T
對數機率張量。如果 softmax 的輸出為 prob,則其值為 log(prob)。
類型限制¶
T 在 (
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)將輸入和輸出類型限制為浮點數張量。
Tind 在 (
tensor(int32)
,tensor(int64)
)將目標限制為整數類型
SoftmaxCrossEntropyLoss - 12¶
版本¶
網域:
main
since_version:
12
function:
True
support_level:
SupportType.COMMON
形狀推斷:
True
此運算符版本自版本 12起可用。
摘要¶
衡量 ‘scores’ 和 ‘labels’ 之間 softmax 交叉熵的損失函數。此運算符首先計算一個形狀與 labels 輸入相同的損失張量。如果輸入是形狀為 (N, C) 的 2 維,則損失張量可能是 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 時,損失為零。當 labels[n][d1][d2]…[dk] = ignore_index 時,l[i][d1][d2]…[dk] = 0
其中: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
ground truth 輸出張量,形狀為 [batch_size] 或 [batch_size, D1, D2, …, Dk],其中 K 是維度數。Labels 元素的值應在 [0, C) 的範圍內。如果指定 ignore_index,它可以有一個超出 [0, C) 的值,且標籤值應在 [0, C) 的範圍內或具有 ignore_index 的值。
weights (選用,異質) - T
手動調整每個類別權重的權重。如果提供,它必須是 1D 張量,將權重指派給每個類別。否則,它會被視為具有所有 1。
輸出¶
介於 1 和 2 個輸出之間。
output (異質) - T
加權損失浮點數張量。如果縮減為 ‘none’,則其形狀為 [batch_size] 或 [batch_size, D1, D2, …, Dk] (對於 K 維損失)。否則,它是一個純量。
log_prob (選用,異質) - T
對數機率張量。如果 softmax 的輸出為 prob,則其值為 log(prob)。
類型約束¶
T 屬於 (
tensor(double)
,tensor(float)
,tensor(float16)
)將輸入和輸出類型限制為浮點數張量。
Tind 在 (
tensor(int32)
,tensor(int64)
)將目標限制為整數類型