Tensorflow筆記之神經網路進一步優化

2021-10-04 02:44:46 字數 1222 閱讀 6737

在前面已經介紹了神經網路優化的基本演算法,通過梯度下降演算法和反向傳播演算法。其中梯度下降演算法學習率的設定尤為重要,因為它是控制引數更新的速度,決定了每次更新的幅度,如果幅度過大,那麼可能導致引數在極優值得兩側來回移動。以

當學習率過大時,梯度下降演算法的執行過程 輪數

當前輪引數值

梯度x學習率

更新後引數值15

2x5x1=10

5-10=-52-5

2x(-5)x1=-10

-5-(-10)=535

2x5x1=10

5-10=-5

從上表中可以看出,無論迭代進行多少輪,引數將在5和-5之間搖擺,不會收斂到乙個極小值。相反 ,當學習率過小時,雖然能保證收斂性,但這會大大降低優化速度。我們需要更多輪迭代才能達到乙個比較理想的優化效果。所以學習率既不能過大,也不能過小,為了解決學習率問題,tensorflow提供了一種更加靈活的學習率設定方法————指數衰減法。通過tf.train.exponential_decay函式實現了指數衰減學習率。這個函式實現了下面**的功能:

decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)
其中decayed_learning_rate為每一輪優化時使用的學習率,learning_rate為事先設定好的初始學習率,decay_rate為衰減係數,decay_steps為衰減速度。下面給出了一段**來示範如何在tensorflow中使用該函式:

global_step=tf.variable(0)

#通過expoential_decay函式生成學習率

learning_rate=tf.train.exponential_decay(0.1,global_step,

100,0.96,staircase=true)

#使用指數衰減的學習率,在minimize函式傳入global_step將自動更新

#global_step引數,從而使得學習率也得到相應的更新。

learning_step=tf.train.gradientdescentoptimizer(learning_rate)\

.minimize(...my loss...,global_step=global_step)

上述**中設定學習率為0.1,因為制定了staircase=true,所以每訓練100輪以後學習率乘0.96.

西瓜書學習筆記之神經網路

感知機 感知機是一種最簡單形式的前饋神經網路,是二元線性分類模型,輸入為例項的特徵向量,輸出為他的類別 1 1 感知機的目的是訓練出將資料分隔開的分離超平面。感知機能輕易完成與 或 非運算,感知機的權重w如此調整 每次改變 wi,wi y y xi 這裡,是學習率,y y 是 值y 和實際值y的差,...

爆火之神經貓

神經貓火起來的速度很快,僅僅用了3天,就創造了500萬使用者和1億的訪問量。它繼承了以往的爆款遊戲的風格,操作簡單,但是遊戲本身還是有一定的難度。這樣門檻低的遊戲吸引了很多人,不同年齡段的都可以玩,容易分享。小孩子對這類的遊戲的感覺是基於它的簡單好玩 年輕的人們更多的是用來打發時間,還有和朋友互動 ...

爆火之神經貓

神經貓火起來的速度非常快,只用了3天,就創造了500萬使用者和1億的訪問量。它繼承了以往的爆款遊戲的風格,操作簡單,可是遊戲本身還是有一定的難度。這樣門檻低的遊戲吸引了非常多人,不同年齡段的都能夠玩,easy分享。小孩子對這類的遊戲的感覺是基於它的簡單好玩 年輕的人們很多其它的是用來打發時間,還有和...