tensorflow常用函數

        Tensorflow的名字中包含兩個概念-tensor和flow。Tensor是張量的意思,在tensorflow中可以被簡單的理解爲數組。Flow就是張量之間通過計算相互轉化的過程。分別介紹tensorflow的計算模型、數據模型和運行模型。

1.計算模型

        Tensorflow是一個通過計算圖的形式啦表述計算的編程系統,Tensorflow將所有的計算轉化爲計算圖,圖中的每一個計算都是計算圖的一個節點,並且不同計算圖上的張量和運算都不會共享。

函數:

        tf.get_default_graph函數可以獲取當前默認的計算圖。

        tf.Graph函數用來生成新的計算圖。

        tf.Graph.device函數來指定運行計算的設備。

2.數據模型

        張量可以被簡單理解爲多位數組。在tensorflow中,張量並非保存數字,而是保存的是如何得到這些數字的運算過程。一個張量中主要包含三個屬性:名字、維度、類型。如下圖所示。


        add:0,表示result這個變量是節點“add”輸出的第一個結果,編號從0開始。shape表示的是張量的維度。dtype表示屬性的類型。

3.運行模型

        Tensorflow中的session來執行定義好的運算。session擁有並管理Tensorflow程序運行時的所有資源。session也有先定義後使用的規則,但是在程序的結尾處要close了。

使用方法:

sess = tf.Session() #創建一個會話

sess.run()  #將進行會話的運算

sess.close(0 #關閉會話

如果不想使用close也可以使用with函數。如:

with tf.Session() as sess:

    sess.run()

tf.Tensor.eval函數來計算一個張量的取值。

tf.InteractiveSession函數會自動將生成的會話註冊爲默認會話。

Tensorflow常用函數:

tf.Variable() #創建一個變量

tf.matmul() #實現矩陣相乘

常見隨機數生成函數:

(1)tf.random_normal() #正太隨機函數,主要參數爲平均值、標準差、取值類型

例:tf.random_normal([2,3],stddev=2),2*3矩陣,標準差爲2

(2)tf.truncated_normal() #正太分佈隨機函數,如果隨機出來的值偏離平均值超過2個標準差,那麼這個數將會被重新隨機

(3)tf.random_uniform() #平均分佈,主要參數爲最小、最大取值,取值類型

(4)tf.random_gamma() #Gamma分佈,主要參數爲形狀參數alpha、尺度參數beta、取值類型

常見常熟生成函數:

(1)tf.zeros()  #生成全0的數組

例:tf.zeros([2,3],int32)

(2)tf.ones() #生成全1的數組

例:tf.ones([2,3],int32)

(3)tf.fill()產生一個全部爲給定數字的數組

例:tf.fill([2,3],2)

(4)tf.constant() #產生一個給點值得常量

例:tf.constant([2,3])

tf.initialize_all_variables() #初始化所有的變量,tensorflow中定義時初始化變量是個僞初始化變量,需要進行改函數的初始化才能生效。

 卷積神經網絡:

tf.nn.max_pool(value,ksize,stridies,padding,name=None)    #value一邊是feature map,形式是一個四維變量爲[batch,height,width,channels],ksize表示池化窗口的大小,是一個四維變量[1,height,width,1],strdies是步長,[1,stride,stride,1],padding取‘VALID’或者‘SAME’。

tf.nn.lrn(input,depth_radius=None,bias=None,alpha=None,beta=None)    #是一個數據增強作爲relu激勵之後防止數據過擬合而提出的一種處理方法,局部相應標準化。基本上會被DROPOUT方法所替代。

tf.nn.bias_add(value,bias,name=None)    #將偏差項bias加入到value上去

tf.image.decode_jpeg(image_contents,channels=3)    #對jpeg格式的圖像進行解碼,解碼之後的結果爲一個tensor,channels爲顏色通道個數

tf.train.slice_input_producer()    #是一個tensor生成器,作用是按照設定,每次從一個tensor列表中按順序或者隨機抽取出一個tensor放入文件名隊列。

tf.train.batch()    #是一個tensor隊列生成器,作用是按照給定的tensor順序,吧batch_size個tensor推送到文件隊列,作爲訓練一個batch的數據,等待tensor出對執行計算。

tf.nn.dropout()    #爲了防止或減輕過擬合而使用的函數,一般在全連接層。

tf.train.AdamOptimizer(learning_rate)    #次函數是Adam優化算法,選擇全局最優點的優化算法,引入了二次方梯度校正,並基於learning_rate進行梯度優化訓練

tf.train.GradientDescentOptimizer(learning_rate)    #此函數是利用梯度下降方進行優化操作,並基於learning_rate進行梯度優化訓練

tf.summary.merge_all()    #可以將所有的summary全部保存到磁盤,以便tensorboard顯示

tf.summery.scalar()    #添加標量統計結果

tf.nn.in_top_k(prediction,target,k)    #模型預測的結果和實際結果是否相等,k表示每個樣本的預測結果的前K個最大的數是否在target裏,一般取1

tf.nn.relu()    #激活函數

tf.nn.lrn(0    #歸一化函數

tf.argmax(vector, 1)    #返回的是vector中的最大值的索引號,如果vector是一個向量,那就返回一個值,如果是一個矩陣,那就返回一個向量,這個向量的每一個維度都是相對應矩陣行的最大值元素的索引號。



Tensorflow的API地址爲:https://www.tensorflow.org/api_docs/python/

參考文獻:

Tensorflow:實戰Google深度學習框架

ValueError: Rank mismatch: Rank of labels (received 2) should equal rank of logits minus 1 (received 2).http://maaiguo.com/ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章