接下來,每天推送一道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裏面執行才能真正得到計算圖的結果。