1. 程式人生 > >Tensorflow中相關函式理論

Tensorflow中相關函式理論

基本概念
使用圖(graphs)來表示計算內容,圖中的節點稱為op(operation),一個op獲得0個或者多個Tensor,執行運算
使用會話(Session)的上下文(context)中執行圖,,圖必須在會話裡被啟動
使用tensor表示資料,可以看作一個n維的陣列或列表
通過變數(Variable)維護狀態
使用feed 和fetch 可以任意操作賦值或者從中提取資料
在這裡插入圖片描述
softmax
softmax可以給不同的物件分配概率。
在這裡插入圖片描述
損失loss
二次代價函式:實際值和預測值的平方差的均值
在這裡插入圖片描述
交叉熵代價函式:
在這裡插入圖片描述
對數釋然函式常用來作為softmax迴歸的代價函式,如果輸出層神經元是sigmoid函式,可以採用交叉熵代價函式。對數似然代價函式與softmax的組合和交叉熵與sigmoid函式的組合非常相似。對數釋然代價函式在二分類時可以化簡為交叉熵代價函式的形式。
tensorflow中的函式:
tf.nn.sigmoid_cross_entropy_with_logits() simoid和交叉熵搭配
tf.nn.softmax_cross_entropy_with_logits() softmax和交叉熵搭配
防止過擬合的三種方法


增加資料集,使用正則化,Dropout
優化器Optimizer

  • tf.train.GradientDescentOptimizer (梯度下降):
    標準梯度下降法:
    標準梯度下降先計算所有樣本彙總誤差,然後根據總誤差來更新權值
    隨機梯度下降法:
    隨機梯度下降隨機抽取一個樣本來計算誤差,然後更新權值
    批量梯度下降法:
    批量梯度下降算是一種折中的方案,從總樣本中選取一個批次(比如一共有10000個樣本,隨機選取100個樣本作為一個batch),然後計算這個batch的總誤差,根據總誤差來更新權值。
    表示式:W = W−η⋅∇WJ(W;x(i);y(i))
  • tf.train.AdadeltaOptimizer(Adadelta):
    在這裡插入圖片描述

    使用Adadelta我們甚至不需要設定一個預設學習率,在Adadelta不需要使用學習率也可以達到一個非常好的效果
  • tf.train.AdagradOptimizer(Adagrad):
  • tf.train.AdagradDAOptimizer:
    在這裡插入圖片描述
    i:代表第i個分類 t:代表出現次數 ϵ:的作用是避免分母為0,取值一般為1e-8 η:取值一般為0.01
    它是基於SGD的一種演算法,它的核心思想是對比較常見的資料給予它比較小的學習率去調整引數,對於比較罕見的資料給予它比較大的學習率去調整引數。它很適合應用於資料稀疏的資料集(比如一個圖片資料集,有10000張狗的照片,10000張貓的照片,只有100張大象的照片)。
    Adagrad主要的優勢在於不需要人為的調節學習率,它可以自動調節。它的缺點在於,隨著迭代次數的增多,學習率也會越來越低,最終會趨向於0。
  • tf.train.MomentumOptimizer(momentum):
    Momentum
    vt = γvt 1 + η∇WJ(W) (γ:動力,通常設定為0.9)
    W = W−vt
    當前權值的改變會受到上一次權值改變的影響,類似於小球向下滾動的時候帶上了慣性。這樣可以加快小球的向下的速度。
    NAG(Nesterov accelerated gradient)
    vt = γvt 1 + η∇WJ(W−γvt 1)
    W = W−vt
    NAG在TF中跟Momentum合併在同一個函式tf.train.MomentumOptimizer中,可以通過引數配置啟用。
    在Momentun中小球會盲目地跟從下坡的梯度,容易發生錯誤,所以我們需要一個更聰明的小球,這個小球提前知道它要去哪裡,它還要知道走到坡底的時候速度慢下來而不是又衝上另一個坡。γvt−1會用來修改W的值,計算W−γvt−1可以表示小球下一個位置大概在哪裡。從而我們可以提前計算下一個位置的梯度,然後使用到當前位置。
  • tf.train.RMSPropOptimizer(RMSprop):
    RMS(Root Mean Square)是均方根的縮寫
    在這裡插入圖片描述
    γ:動力,通常設定為0.9 η:取值一般為0.001 E[g2]t:表示前t次的梯度平方的平均值
    RMSprop借鑑了一些Adagrad的思想,不過這裡RMSprop只用到了前t-1次梯度平方的平均值加上當前梯度的平方的和的開平方作為學習率的分母。這樣RMSprop不會出現學習率越來越低的問題,而且也能自己調節學習率,並且可以有一個比較好的效果。
  • tf.train.AdamOptimizer(Adam):
    在這裡插入圖片描述
    β1: 一般取值0.9 β2 :一般取值0.999 ε:避免分母為0,一般取值10的-8次方
    就像Adadelta和RMSprop一樣Adam會儲存之前衰減的平方梯度,同時它也會儲存之前衰減的梯度。經過一些處理之後再使用類似Adadelta和RMSprop的方式更新引數。

tf.train.FtrlOptimizer
tf.train.ProximalGradientDescentOptimizer
tf.train.ProximalAdagradOptimizer

LSTM基本理論模型
在這裡插入圖片描述