BAT面試題2:請簡要介紹下Tensorflow的計算圖

接下來,每天推送一道BAT的面試題,一般問到的這些知識點都是很重要的,所以知道的就再複習一下,不知道的希望這篇可以幫助到你。日積月累,你會在不知不覺中就步入機器學習的大門,並且越走越遠。同時,還能助你順利拿到OFFER.

今天BAT系列 第二題 請簡要介紹下Tensorflow的計算圖

TensorFlow哲學

separates definition of computations from their execution

對定義計算和計算的執行做了分離。

tensorflow的編程和以往接觸的編程方式有很大差異。以前的編程,無論是編譯類型語言還是動態解釋型語言,變量計算後,就會得到結果,比如c=a+b,當執行完語句後,就會得到c的值。

但, tensorflow不是!

首先看一下,tensor是什麼?它是一個 n 維數組: 0-d tensor: scalar (標量) 1-d tensor: vector (向量) 2-d tensor: matrix(矩陣)

有了tensor, 那麼tensorflow的計算流圖就可以構建爲下面這個樣子,圓形節點代表tensor間執行的操作:

比如對兩個tensor執行一個add操作:

1import tensorflow as tf 
2a = tf.add(3, 5)

接下來,我們打印 a,看看發生什麼:

1print (a) 
2Tensor("Add:0", shape=(), dtype=int32)

這就驗證了之前所說,計算圖和執行計算圖做了嚴格的分離,所以此時打印得不到a值。

如何得到a值?

創建session,並在當前的sess中執行構建的圖得到a的值。

1with tf.Session() as sess:
2    print(sess.run(a))

預告:BAT面試題3: 請問GBDT和XGBoost的區別是什麼?

總結

Session對象封裝了tensorflow的執行環境。記住:計算圖只是定義了operations,operations只有在session裏面執行才能真正得到計算圖的結果。

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