tensorflow 分類損失函式使用小記
阿新 • • 發佈:2020-02-18
多分類損失函式
label.shape:[batch_size]; pred.shape: [batch_size,num_classes]
使用 tf.keras.losses.sparse_categorical_crossentropy(y_true,y_pred,from_logits=False,axis=-1)
- y_true 真實值, y_pred 預測值
- from_logits,我的理解是,如果預測結果經過了softmax(單次預測結果滿足和為1)就使用設為`False`,
如果預測結果未經過softmax就設為`True`.
pred = tf.convert_to_tensor([[0.9,0.05,0.05],[0.5,0.89,0.6],[2.05,0.01,0.94]]) label = tf.convert_to_tensor([0,1,2]) loss = tf.keras.losses.sparse_categorical_crossentropy(label,pred) print(loss.numpy()) # 包含 reduction 引數,用於對一個批次的損失函式求平均值,求和等 # loss = tf.keras.losses.SparseCategoricalCrossentropy()(label,pred) label.shape:[batch_size,num_classes](one_hot);pred.shape:[batch_size,num_classes]
使用 tf.keras.losses.categorical_crossentropy(y_true,axis=-1)
- y_true 真實值, y_pred 預測值
- from_logits 同上
pred = tf.convert_to_tensor([[0.9,[0.05,0.94]]) label = tf.convert_to_tensor([[1,0],[0,1]]) loss = tf.keras.losses.categorical_crossentropy(label,pred) print(loss.numpy())
二分類損失損失函式
label = tf.convert_to_tensor([0,1],dtype=tf.float32) pred = tf.convert_to_tensor([1,dtype=tf.float32) loss = tf.keras.losses.BinaryCrossentropy()(label,pred) print(loss.numpy())
多分類與二分類
通常 categorical_crossentropy與 softmax啟用函式搭配使用; binary_crossentropy 與 sigmoid搭配使用;
參考
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。