Tensorflow 基礎知識總結
最近,在做深度學習的相關項目,在這期間從對tensorflow的一知半解開始,慢慢了解tensorflow框架的作用。對其中的相關函數查了官方文檔,在此做個記錄以免忘記。
tf.Graph()
創建新的計算圖,在tensorflow中有一個默認的計算圖,但是當我們需要對附加圖進行相關的操作的時候,可以使用這個命令。tf.get_default_graph()
可以檢查出默認的計算圖是哪一個。
tf.operator方法
用於定義節點。tf.constant()
用於構造常量。tf.multiply()
用於構造乘法操作,tf.add()
加法操作,tf.substract()
減法操作。
tf.Session()
創建對話操作
數據類型轉換
在tensorflow計算中,兩個數據的數據類型需要匹配,不匹配會容易拋出一場操作。因此我們可以用tf.cast()
轉換相關數據操作。
初始化器
Tensorflow操作 | 描述 |
---|---|
tf.constant(value) | 創建參數value指定的張量 |
tf.fill(shape,value) | 創建形狀shape並以value填充的張量 |
tf.zeros(shape) | 0元素的張量 |
tf.ones(shape) | 1元素的張量 |
tf.random_normal(shape,mean,stddev) | 輸出指定正態分佈的隨機值 |
tf.truncated_normal(shape,mean,stddev) | 速出指定截斷式的正態分佈隨機值 |
tf.random_uniform(shape,mival,maxval) | 從[minval,maxval]的均勻分佈中生成值 |
矩陣乘法
在tensorflow中我們經常需要對矩陣做乘法運算, tf.matmul(A,B)
可以很方便的進行乘法運算。同時,在矩陣乘法運算中,最容易出問題的是矩陣的維度不匹配,因此我們需要對不匹配的矩陣進行維度擴張,tf.expand_dims()
可以方便的增加維度。tf.transpose()
對矩陣進行轉置。
命名
當我們處理的任務非常龐大的時候,往往一張計算圖不能搞定,因此需要對構建的多張計算圖進行命名,使其便於跟蹤和管理。因此,我們可以使用tf.name_scope("名字")
對計算圖進行命名,通常和with操作結合在一起。
tf.global_variables_initializer()
在tensorflow中,首先是對各個計算圖的構建,包括變量的定義以及初始化等工作,而此時張量並沒有參與到其中進行運算。在計算開始前,tensorflow計算引擎會先找到該初始化器來顯示的對計算圖重的所有變量進行初始化操作,本質爲分配內存並初始化。
常見的優化函數
對模型進行迴歸的時候,我們經常使用以下的函數:
均方誤差:tf.reduce_mean()
,在計算差分向量的平方通常用tf.square()
梯度下降:tf.train.GradientDescentOptimizer(learning_rate)
交叉熵:tf.nn.sigmoid_cross_entropy_with_logits()