tensorflow中交叉熵

观察softmax输出的predicts可知, softmax能够放大占比重较大的项
分类标签用one hot向量表示,1的下标就是类别号。是一个shape=(None, num_classes)向量。这种类别表示法用于函数tf.nn.softmax_cross_entropy_with_logits。
labels = np.array([[0, 0, 1],
                   [0, 1, 0],
                   [1, 0, 0],
                   [1, 0, 0],
                   [0, 1, 0]], dtype=np.float32)

logits数据,就是神经网络中的 X \cdot W 的结果。是网络的一次前向传播输出不带非线性函数的结果。
logits = np.array([[1, 2, 7],
                   [3, 5, 2],
                   [6, 1, 3],
                   [8, 2, 0],
                   [3, 6, 1]], dtype=np.float32)

类别数:
num_classes = labels.shape[1]

tf.nn.softmax中dim默认为-1,即,tf.nn.softmax会以最后一个维度作为一维向量计算softmax
predicts = tf.nn.softmax(logits=logits, dim=-1)

注意:tf.nn.softmax函数默认(dim=-1)是对张量最后一维的shape=(p,)向量进行softmax计算,得到一个概率向量。不同的是,tf.nn.sigmoid函数对一个张量的每一个标量元素求得一个概率。也就是说tf.nn.softmax默认针对1阶张量进行运算,可以通过指定dim来针对1阶以上的张量进行运算,但不能对0阶张量进行运算。而tf.nn.sigmoid是针对0阶张量,。
sigmoid函数计算公式:

tensorflow实现

import tensorflow as tf 
input_data = tf.Variable( [[0, 10, -10],[1,2,3]] , dtype = tf.float32 )
output = tf.nn.sigmoid(input_data)
with tf.Session() as sess:
    init = tf.initialize_all_variables()
    sess.run(init)
    print(sess.run(output))

softmax函数

softmax用于多分类过程中 ,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!假设我们有一个数组, V Vi 表示 V 中的第 i 个元素,那么这个元素的 softmax 值就是

更形象的如下图表示

softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!
import numpy as np
import tensorflow as tf 
input_data = tf.Variable( [[0, 10, -10],[1,2,3]] , dtype = tf.float32 )
output = tf.nn.sigmoid(input_data)
output2 = tf.nn.softmax(input_data)
with tf.Session() as sess:
    init = tf.initialize_all_variables()
    sess.run(init)
    print(sess.run(output))
    print(sess.run(output2))

输出为:
output1:[[  5.00000000e-01   9.99954581e-01   4.53978719e-05]
 [  7.31058598e-01   8.80797029e-01   9.52574134e-01]]
output2:[[  4.53978682e-05   9.99954581e-01   2.06105999e-09]
 [  9.00305733e-02   2.44728476e-01   6.65240943e-01]]
可以看出对于10,其softmax的值最大

猜你喜欢

转载自blog.csdn.net/weixin_38145317/article/details/79409507