DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略
DL之CG:Computational Graph計算圖的簡介、入門、使用之詳細攻略
?
?
目錄
計算圖的簡介
計算圖的入門
CG與局部計算
計算圖的使用
?
?
計算圖的簡介
? ? ? ?計算圖Computational Graph,被定義為有向圖,其中節(jié)點對應于數學運算。 計算圖是表達和評估數學表達式的一種方式。是一種描述方程的“語言”。既然是圖,則有節(jié)點(變量),邊(操作(簡單函數))
? ? ? 反向傳播通過使用計算圖形在Tensorflow,Torch,Theano等深度學習框架中實現(xiàn)。 更為重要的是,理解計算圖上的反向傳播結合了幾種不同的算法及其變體,如通過時間反向傳播和共享權重反向傳播。一切轉換成計算圖,它們仍然是相同的算法 - 只是在計算圖上反向傳播。
?? ? ??其中,TensorFlow是一個通過計算圖的形式來表述計算的編程系統(tǒng)。基于TensorFlow這個編程系統(tǒng)中的每一個計算都是計算圖上的一個節(jié)點,而節(jié)點與節(jié)點之間的連線則代表計算之間的依賴關系。
(1)、計算圖,可以直觀地把握計算過程。
(2)、計算圖的節(jié)點是由局部計算構成的。局部計算構成全局計算。
(3)、在神經網絡算法中,計算圖的正向傳播進行一般的計算。通過計算圖的反向傳播,可以計算各個節(jié)點的導數。
?
CG的優(yōu)點:[1],
- 優(yōu)點1:局部計算。無論全局是多么復雜的計算,都可以通過局部計算使各個節(jié)點致力于簡單的計算,從而簡化問題。
- 優(yōu)點2:利用計算圖可以將中間的計算結果全部保存起來(比如,計算進行到2 個蘋果時的金額是200 日元、加上消費稅之前的金額650 日元等)。但是只有這些理由可能還無法令人信服。
- 優(yōu)點3:實際上,使用計算圖最大的原因是,可以通過反向傳播高效計算導數。
CG應用:[1],
1、利用計算圖來理解神經網絡的反向傳播思路。
? ? ? ? 假設我們想知道蘋果價格的上漲會在多大程度上影響最終的支付金額,即求“支付金額關于蘋果的價格的導數”。設蘋果的價格為x,支付金額為L,則相當于求dL/dx。這個導數的值表示當蘋果的價格稍微上漲時,支付金額會增加多少。
?? ? ? ?“支付金額關于蘋果的價格的導數”的值可以通過計算圖的反向傳播求出來。可以通過計算圖的反向傳播求導數。
? ? ? ? 可知,計算圖的優(yōu)點是,可以通過正向傳播和反向傳播高效地計算各個變量的導數值。傳遞這個局部導數的原理,是基于鏈式法則(chain rule)。
DL:深度學習神經網絡算法中的相關概念(鏈式法則等)簡介、使用之詳細攻略
2、計算圖的反向傳播:沿著與正方向相反的方向,乘上局部導數。
? ? ? ? 如圖所示,反向傳播的計算順序是,將信號E乘以節(jié)點的局部導數dy/dx,然后將結果傳遞給下一個節(jié)點。這里所說的局部導數是指正向傳播中y = f(x) 的導數,也就是y 關于x的導數dy/dx。比如,假設y = f(x) = x^2,則局部導數為= 2x。把這個局部導數乘以上游傳過來的值(即E),然后傳遞給前面的節(jié)點。
?
?
?
計算圖的入門
0、基本思路
- (1). 構建計算圖。
- (2). 在計算圖上,從左向右進行計算。正向傳播是從計算圖出發(fā)點到結束點的傳播。既然有正向傳播這個名稱,當然也可以考慮反向(從圖上看的話,就是從右向左)的傳播。實際上,這種傳播稱為反向傳播(backward propagation)。反向傳
播將在導數計算中發(fā)揮重要作用。
1、將數學公式?g = ( x + y ) ? z 轉為計算圖理解
2、太郎在超市買了2 個100 日元一個的蘋果,消費稅是10%,請計算支付金額。[1]
3、太郎在超市買了2 個蘋果、3 個橘子。其中,蘋果每個100 日元,橘子每個150 日元。消費稅是10%,請計算支付金額。[1]
?
CG與局部計算
? ? ? 計算圖的特征是可以通過傳遞“局部計算”獲得最終結果。“局部”這個詞的意思是“與自己相關的某個小范圍”。局部計算是指,無論全局發(fā)生了什么,都能只根據與自己相關的信息輸出接下來的結果。
?? ? ?計算圖可以集中精力于局部計算。無論全局的計算有多么復雜,各個步驟所要做的就是對象節(jié)點的局部計算。雖然局部計算非常簡單,但是通過傳遞它的計算結果,可以獲得全局的復雜計算的結果。
1、在超市買了2 個蘋果和其他很多東西。
?
?
?
?
?
計算圖的使用
0、使用TensorFlow的過程中,通常需要定義兩個階段
- 階段1:定義計算圖中所有的計算
- 階段2:執(zhí)行計算
定義計算階段的Demo:下邊的代碼中,TensorFlow會自動將定義的計算a和b轉化為計算圖中的節(jié)點。在TensorFlow中,系統(tǒng)會自動維護一個默認的計算圖,通過tf.get_default_graph函數可以獲取當前默認的計算圖。除了使用默認的計算圖,TensorFlow支持通過tf.Graph函數來生成新的計算圖。
import tensorflow as tf a = tf.constant([1.0,2.0], name='a') b = tf.constant([3.0,4.0], name='b') result = a + b?
1、backpropagation 算法用CG理解
?
?
參考文章
[1]《深度入門-基python的理論與實現(xiàn)》
?
?
總結
以上是生活随笔為你收集整理的DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成功解决read_data_sets (
- 下一篇: DL之BP:利用乘法层/加法层(forw