tensorflow-tf.nn.softmax,tf.nn.sparse_softmax_cr
阿新 • • 發佈:2018-12-03
#!/usr/bin/env python2 # -*- coding: utf-8 -*- """ Created on Tue Oct 2 08:43:02 2018 @author: myhaspl @email:[email protected] tf.nn.softmax tf.nn.sparse_softmax_cross_entropy_with_logits tf.nn.softmax_cross_entropy_with_logits """ import tensorflow as tf g=tf.Graph() with g.as_default(): x1=tf.constant([0.4,0.2,0.9,0.81]) x2=tf.constant([0.6,0.3,0.7,0.6]) x3=tf.constant([0.7,0.4,0.8,0.95]) y1=[tf.nn.softmax(x1)] y2=tf.nn.softmax(x2) y3=tf.nn.softmax(x3) y=tf.stack([y2,y3]) labels1 = [0,2] logits1 = [2,0.5] labels2 = [1,3] logits2 = [[2,0.5,6,2,1],[1.8,0.3,2,0.1,0.5]] result1 = tf.nn.softmax_cross_entropy_with_logits(labels=labels1, logits=logits1) result2 = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels2, logits=logits2) with tf.Session(graph=g) as sess: print sess.run(result1) print sess.run(result2)
3.4028268
[5.5463643 2.7646239]
tf.nn.sparse_softmax_cross_entropy_with_logits表示一個樣本只能屬於一類,具有排他性。但要注意,labels是稀疏表示的,是 [0,num_classes]中的一個數值,因此,labels的每個元素是標量標籤值,對應著logits中的向量輸出值。
tf.nn.softmax_cross_entropy_with_logits表示一個樣本可以屬於多類,不具排他性。labels和logits為正常的單個或多個向量標籤值與輸出值。