1.tf.nn.softmax( logits, axis=None,name=None,dim=None )
作用:用於做softmax激活,相當於執行:softmax = tf.exp(logits) / tf.reduce_sum(tf.exp(logits), axis)
參數:
- logits:一個非空的Tensor,是softmax之前的類別預測。必須是下列類型之一:half, float32,float64。
- axis:將在其上執行維度softmax。默認值爲-1,表示最後一個維度。
- name:操作的名稱(可選)。
- dim:axis的已棄用的別名。
返回:
一個Tensor,與logits具有相同的類型和shape。
注意:這裏得到的還只是分類的激活值,後面需要手動地與labels計算損失值。
2.tf.nn.sparse_softmax_cross_entropy_with_logits()
作用:用於做softmax激活,並與labels計算交叉損失輸出,即輸出的是損失值。因此涉及的流程包括兩步:
1)計算softmax激活:
2)與樣本標籤做交叉熵:
參數:
- labels:樣本標籤,與logits維度相同,爲[batch,class_num],這裏每一個sample的標籤可以不是one-hot的,如1,2,...,class_num
- logits:是softmax之前的類別預測。
- dim:類維度。默認爲-1,這是最後一個維度。
- name:操作的名稱(可選)。
返回:
做完交叉熵之後的損失向量,要計算總體損失的話,要再接一個tf.reduce_sum或者tf.reduce_mean
3.tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None)
作用:用於做softmax激活,並與labels計算交叉損失輸出,即輸出的是損失值。因此涉及的流程包括兩步:
1)計算softmax激活:
2)與樣本標籤做交叉熵:
參數:
- labels:樣本標籤,與logits維度相同,爲[batch,class_num],這裏每一個sample的標籤必須是one-hot的
- logits:是softmax之前的類別預測。
- dim:類維度。默認爲-1,這是最後一個維度。
- name:操作的名稱(可選)。
返回:
做完交叉熵之後的損失向量,要計算總體損失的話,要再接一個tf.reduce_sum或者tf.reduce_mean