稀疏分類交叉熵與稀疏分類交叉熵的使用差異


sparsecategoricalcrossentropy,和,SparseCategoricalCrossentropy,用法,區別

這兩個函數的功能都是將數字編碼轉化成one-hot編碼格式,然后對one-hot編碼格式的數據(真實標簽值)與預測出的標簽值使用交叉熵損失函數。

先看一下官網給出的對於兩個函數定義:

tf.keras.losses.SparseCategoricalCrossentropy(
from_logits=False, reduction=losses_utils.ReductionV2.AUTO,
name=‘sparse_categorical_crossentropy’)

tf.keras.losses.sparse_categorical_crossentropy(
y_true, y_pred, from_logits=False, axis=-1)

函數定義中,最明顯的區別是sparse_categorical_crossentropy中在參數中指定y_true(真實標簽值)以及y_pred(預測標簽值)。

import tensorflow as tf import numpy as np y_true = tf.constant([1, 2]) y_pred = tf.constant([[0.05, 0.95, 0], [0.1, 0.8, 0.1]]) loss = tf.reduce_mean(tf.keras.losses.sparse_categorical_crossentropy(y_true, y_pred)) scce = tf.keras.losses.SparseCategoricalCrossentropy() print(loss.numpy()) print(scce(y_true, y_pred).numpy())
運行結果如下: 在這里插入圖片描述

sparse_categorical_crossentropy需在參數的部分指定y_true和y_pred
SparseCategoricalCrossentropy在調用部分指定y_true和y_pred

接下來,再對這兩個函數的參數進行簡單描述:

  1. SparseCategoricalCrossentropy
  • reduction=‘auto’,這個參數是進行最后的求平均,如果是設置為losses_utils.ReductionV2.None,就不會求平均了

設置為reduction='none' scce = tf.keras.losses.SparseCategoricalCrossentropy(reduction='none') # 輸出結果是:

 [0.05129344 2.3025851 ] #

設置為reduction='auto' scce = tf.keras.losses.SparseCategoricalCrossentropy(reduction='auto')

# 輸出結果是求平均后的結果:

# 1.1769392

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM