1. 程式人生 > >影象識別常用到的函式解析

影象識別常用到的函式解析

影象識別中常用到的函式解析

1.損失函式

計算labels和logits之間的交叉熵(cross entropy)

    tf.nn.softmax_cross_entropy_with_logits(
                                           _sentinel=None,
                                          labels=None,
                                          logits=None,
                                          dim=-1,
                                          name=None
                                          )

通常使用兩個引數:
引數logits 為識別模型的輸出結果,logits是作為softmax的輸入。也就是不包含softmax層的模型的輸出結果。
引數label的含義就是一個分類標籤,所有類別的分類的概率,比如說[0.2,0.3,0.5],labels的每一行必須是一個概率分佈。

2. 在多個分類上的概率分佈情況

  tf.nn.softmax(logits, axis=None, name=None, dim=None)

其中引數logits為模型的輸出結果。
Softmax的工作則是,它把一個系列數從[-inf, +inf] 對映到[0,1],除此之外,它還把所有參與對映的值累計之和等於1,變成諸如[0.95, 0.05, 0]的概率向量。這樣一來,經過Softmax加工的資料可以當做概率來用。

3. tf.reduce_mean()通過張量的維數計算元素的平均值

tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None) 

4.函式 tf.cast()

     cast(
           x,
          dtype,
          name=None
      ) 

將x的資料格式轉化成dtype.例如,原來x的資料格式是bool, 那麼將其轉化成float以後,就能夠將其轉化成0和1的序列。反之也可以。例如:

a = tf.Variable([1,0,0,1,1])
b = tf.cast(a,dtype=tf.bool)
sess = tf.Session()
sess.run(tf.initialize_all_variables())
print(sess.run(b))
#[ True False False  True  True]

5.tf.equal(A,B)

A = [[1,3,4,5,6]]
B = [[1,3,4,3,2]]
with tf.Session() as sess:
    print(sess.run(tf.equal(A, B)))
    
#輸出:[[ True  True  True False False]]

該函式返回的是一個布林型別的結果

6.優化器

tf.train.AdamOptimizer(learning_rate=  ).minimize(cost)

引數cost是損失函式的值