tensorflow 分类损失函数使用小记
多分类损失函数
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,y_pred,from_logits=False,axis=-1)
-y_true真实值,y_pred预测值
-from_logits同上
pred=tf.convert_to_tensor([[0.9,0.05,0.05],[0.5,0.89,0.6],[0.05,0.01,0.94]]) label=tf.convert_to_tensor([[1,0,0],[0,1,0],[0,0,1]]) loss=tf.keras.losses.categorical_crossentropy(label,pred) print(loss.numpy())
二分类损失损失函数
label=tf.convert_to_tensor([0,0,1,1],dtype=tf.float32) pred=tf.convert_to_tensor([1,1,1,0],dtype=tf.float32) loss=tf.keras.losses.BinaryCrossentropy()(label,pred) print(loss.numpy())
多分类与二分类
通常categorical_crossentropy与softmax激活函数搭配使用;binary_crossentropy与sigmoid搭配使用;
参考
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。