python编程之tf.nn.softmax_cross_entropy_with_logits()的用法,包你看过一次终生不退还知识

tf.nn.softmax_cross_entropy_with_logits()这个方法又臭又长,看到就头晕!!

这个方法在什么时候用到?

神经网络最后输出层时用到,计算损失率,神经网络预测出的标签与实际标签之间的误差是多少?这是评价这个模型优劣的标准。

这个方法有两个重要参数:1、logits:样本最后输出的几个特征值(如果是10类,就是10个特征值,与分类的类别数目有关)

                                            2、实际标签(这个图片或者音频文件是属于第几类的)


 python编程之tf.nn.softmax_cross_entropy_with_logits()的用法,包你看过一次终生不退还知识

假设,我们的文本或者音频总共是5类,我们是单样本,最后输出层是的[14.0,35.0,16.0,12.0,7.0];

tf.nn.softmax_cross_entropy_with_logits()方法的功能如下

1、计算概率

2、与实际标签比较,如果预测结果与实际标签一致,那么误差为0,如果预测结果与实际标签相差太远,那么误差就会很大;


python编程之tf.nn.softmax_cross_entropy_with_logits()的用法,包你看过一次终生不退还知识

 1、如果计算概率,当前值/总和;换一句人话来说,就是当前的值越大,那么概率越大;

1,2,3,4,5     总和是15,你说这几个数谁的概率大,当然是5啊!

2、在训练神经网络过程中,实际标签我们是知道的,比如这个图片或者音频文件是属于第3类的,那么我们一般用热码方式表达;

为什么用热码的方式表达?

因为我们神经网络的最后的输出层,如果是分成5类的话,一般最后一层是5个神经元,热码的方式与这样输出方式,一一对应而且方便计算;

假设热码是[0.0,0.0,0.0,1.0,0.0]   也就是说这个图片或者音频文件是第三个;(热码从0开始算,不是1)

3、但是输出层是[14.0,35.0,16.0,12.0,7.0],我们可以看出,35最大,也就是第一个,然而实际标签是第三个,存在误差;

4、那么误差是多少呢?对于的概览越小,误差越大!

4.1、标签1.0对于的是12,12在[14.0,35.0,16.0,12.0,7.0]里面的大小是倒数第二的,误差大,是23%

python编程之tf.nn.softmax_cross_entropy_with_logits()的用法,包你看过一次终生不退还知识

4.2、标签1.0对于的是7.0,7.0在[14.0,35.0,16.0,12.0,7.0]里面的大小是倒数第一的,误差最大,是28%

python编程之tf.nn.softmax_cross_entropy_with_logits()的用法,包你看过一次终生不退还知识 

 4.3、标签1.0对于的是35.0,35.0在[14.0,35.0,16.0,12.0,7.0]里面的大小最大,误差最小为0

python编程之tf.nn.softmax_cross_entropy_with_logits()的用法,包你看过一次终生不退还知识 

  4.4、标签1.0对于的是16.0,16.0在[14.0,35.0,16.0,12.0,7.0]里面比12大,所以误差比23%小,为19%

python编程之tf.nn.softmax_cross_entropy_with_logits()的用法,包你看过一次终生不退还知识 

 

 你看懂了么?如果不知道的话,可以自己敲一下运行看看,就知道怎么回事?