softmax_cross_entropy_with_logits函數原型:
tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=pred, name=None)
函數功能:計算最后一層是softmax層的cross entropy,把softmax計算與cross entropy計算放到一起了,用一個函數來實現,用來提高程序的運行速度。
參數name:該操作的name
參數labels:shape是[batch_size, num_classes],神經網絡期望輸出。
參數logits:shape是[batch_size, num_classes] ,神經網絡最后一層的輸入。
具體的執行流程大概分為兩步:
第一步是對網絡最后一層的輸出做一個softmax,這一步通常是求取輸出屬於某一類的概率,對於單樣本而言,輸出就是一個
大小的向量([Y1,Y2,Y3,...]其中Y1,Y2,Y3,...分別代表了是屬於該類的概率)num_classes
第二步是softmax的輸出向量[Y1,Y2,Y3,...]和樣本的實際標簽做一個交叉熵,
指實際標簽中第i個的值;
指
中,第i個元素的值。softmax的輸出向量[Y1,Y2,Y3...]
總之,tensorflow之所以把softmax和cross entropy放到一個函數里計算,就是為了提高運算速度。
轉載:https://blog.csdn.net/qiqiaiairen/article/details/53169002