Keras 3 API 文件 / 損失函數 / 迴歸損失函數

迴歸損失

[原始碼]

MeanSquaredError 類別

keras.losses.MeanSquaredError(
    reduction="sum_over_batch_size", name="mean_squared_error", dtype=None
)

計算標籤和預測之間誤差的平方平均值。

公式

loss = mean(square(y_true - y_pred))

引數

  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:損失實例的可選名稱。
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

[原始碼]

MeanAbsoluteError 類別

keras.losses.MeanAbsoluteError(
    reduction="sum_over_batch_size", name="mean_absolute_error", dtype=None
)

計算標籤和預測之間絕對差異的平均值。

公式

loss = mean(abs(y_true - y_pred))

引數

  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:損失實例的可選名稱。
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

[原始碼]

MeanAbsolutePercentageError 類別

keras.losses.MeanAbsolutePercentageError(
    reduction="sum_over_batch_size", name="mean_absolute_percentage_error", dtype=None
)

計算 y_truey_pred 之間的平均絕對百分比誤差。

公式

loss = 100 * mean(abs((y_true - y_pred) / y_true))

引數

  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:損失實例的可選名稱。
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

[原始碼]

MeanSquaredLogarithmicError 類別

keras.losses.MeanSquaredLogarithmicError(
    reduction="sum_over_batch_size", name="mean_squared_logarithmic_error", dtype=None
)

計算 y_truey_pred 之間的均方對數誤差。

公式

loss = mean(square(log(y_true + 1) - log(y_pred + 1)))

引數

  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:損失實例的可選名稱。
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

[原始碼]

CosineSimilarity 類別

keras.losses.CosineSimilarity(
    axis=-1, reduction="sum_over_batch_size", name="cosine_similarity", dtype=None
)

計算 y_truey_pred 之間的餘弦相似度。

請注意,它是一個介於 -1 和 1 之間的數字。當它是介於 -1 和 0 之間的負數時,0 表示正交,而更接近 -1 的值表示更高的相似度。這使得它可以在嘗試最大化預測和目標之間接近程度的設定中用作損失函數。如果 y_truey_pred 其中之一是零向量,則無論預測和目標之間的接近程度如何,餘弦相似度都將為 0。

公式

loss = -sum(l2_norm(y_true) * l2_norm(y_pred))

引數

  • axis:計算餘弦相似度的軸(特徵軸)。預設為 -1
  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:損失實例的可選名稱。
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

[原始碼]

Huber 類別

keras.losses.Huber(
    delta=1.0, reduction="sum_over_batch_size", name="huber_loss", dtype=None
)

計算 y_truey_pred 之間的 Huber 損失。

公式

for x in error:
    if abs(x) <= delta:
        loss.append(0.5 * x^2)
    elif abs(x) > delta:
        loss.append(delta * abs(x) - 0.5 * delta^2)

loss = mean(loss, axis=-1)

請參閱:Huber 損失

引數

  • delta:一個浮點數,Huber 損失函數從二次變為線性的點。
  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:實例的可選名稱。
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

[原始碼]

LogCosh 類別

keras.losses.LogCosh(reduction="sum_over_batch_size", name="log_cosh", dtype=None)

計算預測誤差的雙曲餘弦對數。

公式

error = y_pred - y_true
logcosh = mean(log((exp(error) + exp(-error))/2), axis=-1)`

其中 x 是誤差 y_pred - y_true

引數

  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:實例的可選名稱。
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

[原始碼]

Tversky 類別

keras.losses.Tversky(
    alpha=0.5,
    beta=0.5,
    reduction="sum_over_batch_size",
    name="tversky",
    axis=None,
    dtype=None,
)

計算 y_truey_pred 之間的 Tversky 損失值。

此損失函數由懲罰假陽性和假陰性的 alpha 和 beta 係數加權。

alpha=0.5beta=0.5 時,損失值等同於 Dice 損失。

引數

  • alpha:控制假陽性發生率的係數。預設為 0.5
  • beta:控制假陰性發生率的係數。預設為 0.5
  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:損失實例的可選名稱。
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

回傳值

Tversky 損失值。

參考文獻


[原始碼]

Dice 類別

keras.losses.Dice(
    reduction="sum_over_batch_size", name="dice", axis=None, dtype=None
)

計算 y_truey_pred 之間的 Dice 損失值。

公式

loss = 1 - (2 * sum(y_true * y_pred)) / (sum(y_true) + sum(y_pred))

引數

  • reduction:要應用於損失的縮減類型。在幾乎所有情況下,這應為 "sum_over_batch_size"。支援的選項有 "sum""sum_over_batch_size""mean""mean_with_sample_weight"None"sum" 將損失求和,"sum_over_batch_size""mean" 將損失求和並除以樣本大小,而 "mean_with_sample_weight" 將損失求和並除以樣本權重的總和。"none"None 不執行聚合。預設為 "sum_over_batch_size"
  • name:損失實例的可選名稱。
  • axis:計算損失的維度的元組。預設為 None
  • dtype:損失計算的 dtype。預設為 None,表示使用 keras.backend.floatx()keras.backend.floatx()"float32",除非設定為不同的值(透過 keras.backend.set_floatx())。如果提供 keras.DTypePolicy,則將使用 compute_dtype

回傳值

Dice 損失值。

範例

>>> y_true = [[[[1.0], [1.0]], [[0.0], [0.0]]],
...           [[[1.0], [1.0]], [[0.0], [0.0]]]]
>>> y_pred = [[[[0.0], [1.0]], [[0.0], [1.0]]],
...           [[[0.4], [0.0]], [[0.0], [0.9]]]]
>>> axis = (1, 2, 3)
>>> loss = keras.losses.dice(y_true, y_pred, axis=axis)
>>> assert loss.shape == (2,)
>>> loss
array([0.5, 0.75757575], shape=(2,), dtype=float32)
>>> loss = keras.losses.dice(y_true, y_pred)
>>> assert loss.shape == ()
>>> loss
array(0.6164384, shape=(), dtype=float32)
>>> y_true = np.array(y_true)
>>> y_pred = np.array(y_pred)
>>> loss = keras.losses.Dice(axis=axis, reduction=None)(y_true, y_pred)
>>> assert loss.shape == (2,)
>>> loss
array([0.5, 0.75757575], shape=(2,), dtype=float32)

[原始碼]

mean_squared_error 函數

keras.losses.mean_squared_error(y_true, y_pred)

計算標籤和預測之間的均方誤差。

公式

loss = mean(square(y_true - y_pred), axis=-1)

範例

>>> y_true = np.random.randint(0, 2, size=(2, 3))
>>> y_pred = np.random.random(size=(2, 3))
>>> loss = keras.losses.mean_squared_error(y_true, y_pred)

引數

  • y_true:形狀為 [batch_size, d0, .. dN] 的真實值。
  • y_pred:形狀為 [batch_size, d0, .. dN] 的預測值。

回傳值

形狀為 [batch_size, d0, .. dN-1] 的均方誤差值。


[原始碼]

mean_absolute_error 函數

keras.losses.mean_absolute_error(y_true, y_pred)

計算標籤和預測之間的平均絕對誤差。

loss = mean(abs(y_true - y_pred), axis=-1)

引數

  • y_true:形狀為 [batch_size, d0, .. dN] 的真實值。
  • y_pred:形狀為 [batch_size, d0, .. dN] 的預測值。

回傳值

形狀為 [batch_size, d0, .. dN-1] 的平均絕對誤差值。

範例

>>> y_true = np.random.randint(0, 2, size=(2, 3))
>>> y_pred = np.random.random(size=(2, 3))
>>> loss = keras.losses.mean_absolute_error(y_true, y_pred)

[原始碼]

mean_absolute_percentage_error 函數

keras.losses.mean_absolute_percentage_error(y_true, y_pred)

計算 y_truey_pred 之間的平均絕對百分比誤差。

公式

loss = 100 * mean(abs((y_true - y_pred) / y_true), axis=-1)

透過除以 maximum(y_true, epsilon) 來防止除以零,其中 epsilon = keras.backend.epsilon()(預設為 1e-7)。

引數

  • y_true:形狀為 [batch_size, d0, .. dN] 的真實值。
  • y_pred:形狀為 [batch_size, d0, .. dN] 的預測值。

回傳值

形狀為 [batch_size, d0, .. dN-1] 的平均絕對百分比誤差值。

範例

>>> y_true = np.random.random(size=(2, 3))
>>> y_pred = np.random.random(size=(2, 3))
>>> loss = keras.losses.mean_absolute_percentage_error(y_true, y_pred)

[原始碼]

mean_squared_logarithmic_error 函數

keras.losses.mean_squared_logarithmic_error(y_true, y_pred)

計算 y_truey_pred 之間的均方對數誤差。

公式

loss = mean(square(log(y_true + 1) - log(y_pred + 1)), axis=-1)

請注意,y_predy_true 不能小於或等於 0。負值和 0 值將被替換為 keras.backend.epsilon()(預設為 1e-7)。

引數

  • y_true:形狀為 [batch_size, d0, .. dN] 的真實值。
  • y_pred:形狀為 [batch_size, d0, .. dN] 的預測值。

回傳值

形狀為 [batch_size, d0, .. dN-1] 的均方對數誤差值。

範例

>>> y_true = np.random.randint(0, 2, size=(2, 3))
>>> y_pred = np.random.random(size=(2, 3))
>>> loss = keras.losses.mean_squared_logarithmic_error(y_true, y_pred)

[原始碼]

cosine_similarity 函數

keras.losses.cosine_similarity(y_true, y_pred, axis=-1)

計算標籤和預測之間的餘弦相似度。

公式

loss = -sum(l2_norm(y_true) * l2_norm(y_pred))

請注意,它是一個介於 -1 和 1 之間的數字。當它是介於 -1 和 0 之間的負數時,0 表示正交,而更接近 -1 的值表示更高的相似度。這使得它可以在嘗試最大化預測和目標之間接近程度的設定中用作損失函數。如果 y_truey_pred 其中之一是零向量,則無論預測和目標之間的接近程度如何,餘弦相似度都將為 0。

引數

  • y_true:真實目標的張量。
  • y_pred:預測目標的張量。
  • axis:確定相似度的軸。預設為 -1

回傳值

餘弦相似度張量。

範例

>>> y_true = [[0., 1.], [1., 1.], [1., 1.]]
>>> y_pred = [[1., 0.], [1., 1.], [-1., -1.]]
>>> loss = keras.losses.cosine_similarity(y_true, y_pred, axis=-1)
[-0., -0.99999994, 0.99999994]

[原始碼]

huber 函數

keras.losses.huber(y_true, y_pred, delta=1.0)

計算 Huber 損失值。

公式

for x in error:
    if abs(x) <= delta:
        loss.append(0.5 * x^2)
    elif abs(x) > delta:
        loss.append(delta * abs(x) - 0.5 * delta^2)

loss = mean(loss, axis=-1)

請參閱:Huber 損失

範例

>>> y_true = [[0, 1], [0, 0]]
>>> y_pred = [[0.6, 0.4], [0.4, 0.6]]
>>> loss = keras.losses.huber(y_true, y_pred)
0.155

引數

  • y_true:真實目標的張量。
  • y_pred:預測目標的張量。
  • delta:一個浮點數,Huber 損失函數從二次變為線性的點。預設為 1.0

回傳值

每個樣本一個純量損失條目的張量。


[原始碼]

log_cosh 函數

keras.losses.log_cosh(y_true, y_pred)

預測誤差的雙曲餘弦對數。

公式

loss = mean(log(cosh(y_pred - y_true)), axis=-1)

請注意,log(cosh(x)) 對於小的 x 近似等於 (x ** 2) / 2,對於大的 x 近似等於 abs(x) - log(2)。這表示「logcosh」主要以均方誤差的方式運作,但不會受到偶爾發生的極度不正確預測的影響。

範例

>>> y_true = [[0., 1.], [0., 0.]]
>>> y_pred = [[1., 1.], [0., 0.]]
>>> loss = keras.losses.log_cosh(y_true, y_pred)
0.108

引數

  • y_true:形狀為 [batch_size, d0, .. dN] 的真實值。
  • y_pred:形狀為 [batch_size, d0, .. dN] 的預測值。

回傳值

形狀為 [batch_size, d0, .. dN-1] 的 Logcosh 誤差值。


[原始碼]

tversky 函數

keras.losses.tversky(y_true, y_pred, alpha=0.5, beta=0.5, axis=None)

計算 y_truey_pred 之間的 Tversky 損失值。

此損失函數由懲罰假陽性和假陰性的 alpha 和 beta 係數加權。

alpha=0.5beta=0.5 時,損失值等同於 Dice 損失。

引數

  • y_true:真實目標的張量。
  • y_pred:預測目標的張量。
  • alpha:控制假陽性發生率的係數。
  • beta:控制假陰性發生率的係數。
  • axis:計算損失的維度的元組。

回傳值

Tversky 損失值。

參考文獻


[原始碼]

dice 函數

keras.losses.dice(y_true, y_pred, axis=None)

計算 y_truey_pred 之間的 Dice 損失值。

公式

loss = 1 - (2 * sum(y_true * y_pred)) / (sum(y_true) + sum(y_pred))

引數

  • y_true:真實目標的張量。
  • y_pred:預測目標的張量。
  • axis:計算損失的維度的元組

回傳值

Dice 損失值。