Tensorflow---softmax_cross_entropy_with_logits的用法

Tensorflow—softmax_cross_entropy_with_logits的用法

研究人工智能,图像算法也有两三年了,也写过很多代码,但是每次研究dl算法的时候,肯定都会写一句:

tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None)

这其实就是损失函数的构建~
今天花了点时间总结了下我对这个api的理解~~

计算公式

先讲下它的计算公式:
在这里插入图片描述
下面举个例子来说明下进行交叉熵损失函数的计算过程~

import tensorflow as tf

#假设有一个3*3的样本,即三个样本,每个样本有三个特征
logits = tf.constant([[2,7,5],[6,3,4],[7,5,6]],dtype=tf.float32)

#同时,设置三个样本的标签,[0,1,2],将其进行one-hot转换
labels = [[0,1,0],[1,0,0],[0,0,1]]

#先对logits进行sotfmax
res1 = tf.nn.softmax(logits)

# 对第一步的结果取log
res2 = tf.log(res1)

# 计算交叉熵损失
res3 = tf.nn.softmax_cross_entropy_with_logits(logits=logits,labels=labels)

# 求出交叉熵损失后再对各个样本的交叉熵损失取平均
res4 = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits,labels=labels))

with tf.Session() as sess:
    res1,res2,res3,res4 = sess.run([res1,res2,res3,res4])
    print(res1)
    print(res2)
    print(res3)
    print(res4)

总结一下计算过程:

# 先对logits进行sotfmax
# 对第一步的结果取log
# 计算交叉熵损失
# 求出交叉熵损失后再对各个样本的交叉熵损失取平均

tf.nn.softmax_cross_entropy_with_logits与tf.nn.sigmoid_cross_entropy_with_logits的区别

在前者中,在计算交叉熵损失函数的时候,是进行softmax,但是在后者中,是针对每个样本的每个特征单独做一个sigmoid.

a = tf.constant([1,2,3],tf.float32)

res_sig = tf.nn.sigmoid(a)
res_soft = tf.nn.softmax(a)

with tf.Session() as sess:
    print('res_sig:',res_sig.eval())
    print('res_soft:',res_soft.eval())
    
'''
运行结果:
res_sig: [0.7310586  0.880797   0.95257413] 对一个样本中三维特征分别做了一个sigmoid函数,转换后的结果相加之和不为0
res_soft: [0.09003057 0.24472848 0.66524094] 对一个样本做了一个softmax函数,转换后相加等于0
'''

总结:
tf.nn.sigmoid_cross_entropy_with_logits:一般用于多标签分类情况的损失函数(一个样本可能属于多个类别)
softmax_cross_entropy_with_logits:一般用于单标签分类情况的损失函数(一个样本仅属于一个类别)

****ps: mean_squared_error:以实际值和预测值之间的差值平方和作为损失函数的值, 也称为L2损失函数,用于标签是回归类型的~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进我的收藏吃灰吧~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值