对tf.nn.softmax的理解
举个例子:假设你的WX=[1,2,3],那么经过softmax层后就会得到[0.09,0.24,0.67],这三个数字表示这个样本属于第1,2,3类的概率分别是0.09,0.24,0.67。取概率最大的0.24,所以这里得到的预测值就是第二类。
tf.nn.softmax_cross_entropy_with_logits中的“logits”到底是个什么意思?
请注意Logit一词的分解,对它(it)Log(取对数),这里“it”就是Odds。
交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。
Softmax把一个系列的概率替代物(logits)从[-inf, +inf] 映射到[0,1]
经过softmax的加工,就变成“归一化”的概率(设为p1),这个新生成的概率p1,和labels所代表的概率分布(设为p2)一起作为参数,用来计算交叉熵。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu May 10 08:32:59 2018
@author: yhilly
"""
import tensorflow as tf
labels = [[0.2,0.3,0.5],
[0.1,0.6,0.3]]
logits = [[4,1,-2],
[0.1,1,3]]
logits_scaled = tf.nn.softmax(logits)
result = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
with tf.Session() as sess:
print (sess.run(logits_scaled))
print (sess.run(result))