DL框架之TensorFlow:深度学习框架TensorFlow Core(低级别TensorFlow API)的简介、安装、使用方法之详细攻略
DL框架之TensorFlow:TensorFlow Core(低級別TensorFlow API)的簡介、安裝、使用方法之詳細DL框架之TensorFlow:深度學習框架TensorFlow Core(低級別TensorFlow API)的簡介、安裝、使用方法之詳細攻略
?
?
目錄
TensorFlow Core的簡介
TensorFlow Core的安裝
TensorFlow Core的使用方法
圖
TensorBoard
會話 (Session)
?
?
?
?
TensorFlow Core的簡介
? ? ? TensorFlow Core是低級別TensorFlow API。
?
?
TensorFlow Core的安裝
默認自帶
?
TensorFlow Core的使用方法
參考文章:https://tensorflow.google.cn/guide/low_level_intro
您可以將 TensorFlow Core 程序看作由兩個互相獨立的部分組成:
圖
計算圖是排列成一個圖的一系列 TensorFlow 指令。圖由兩種類型的對象組成。
- 操作(簡稱“op”):圖的節點。操作描述了消耗和生成張量的計算。
- 張量:圖的邊。它們代表將流經圖的值。大多數 TensorFlow 函數會返回?tf.Tensors。
重要提示:tf.Tensors?不具有值,它們只是計算圖中元素的手柄。
我們來構建一個簡單的計算圖。最基本的指令是一個常量。構建指令的 Python 函數將一個張量值作為輸入值。生成的指令不需要輸入值。它在運行時輸出的是被傳遞給構造函數的值。我們可以創建如下所示的兩個浮點數常量?a?和?b:
a = tf.constant(3.0, dtype=tf.float32) b = tf.constant(4.0) # also tf.float32 implicitly total = a + b print(a) print(b) print(total)?
打印語句會生成:
Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32) Tensor("add:0", shape=(), dtype=float32)?
請注意,打印張量并不會如您可能預期的那樣輸出值?3.0、4.0?和?7.0。上述語句只會構建計算圖。這些?tf.Tensor對象僅代表將要運行的操作的結果。
圖中的每個指令都擁有唯一的名稱。這個名稱不同于使用 Python 分配給相應對象的名稱。張量是根據生成它們的指令命名的,后面跟著輸出索引,如上文的?"add:0"?所示。
TensorBoard
TensorFlow 提供了一個名為 TensorBoard 的實用程序。TensorBoard 的諸多功能之一是將計算圖可視化。您只需要使用幾個簡單的命令就能輕松完成此操作。
首先將計算圖保存為 TensorBoard 摘要文件,具體操作如下所示:
writer = tf.summary.FileWriter('.') writer.add_graph(tf.get_default_graph())?
這將在當前目錄中生成一個?event?文件,其名稱格式如下:
events.out.tfevents.{timestamp}.{hostname}?
現在,在新的終端中使用以下 shell 命令啟動 TensorBoard:
tensorboard --logdir .?
接下來,在您的瀏覽器中打開 TensorBoard 的圖頁面,您應該會看到與以下圖形類似的圖:
要詳細了解 TensorBoard 的計算圖可視化工具,請參閱?TensorBoard:圖的直觀展示。
會話 (Session)
要評估張量,需要實例化一個?tf.Session?對象(非正式名稱為會話)。會話會封裝 TensorFlow 運行時的狀態,并運行 TensorFlow 操作。如果說?tf.Graph?像一個?.py?文件,那么?tf.Session?就像一個?python?可執行對象。
下面的代碼會創建一個?tf.Session?對象,然后調用其?run?方法來評估我們在上文中創建的?total?張量:
sess = tf.Session() print(sess.run(total))?
當您使用?Session.run?請求輸出節點時,TensorFlow 會回溯整個圖,并流經提供了所請求的輸出節點對應的輸入值的所有節點。因此此指令會打印預期的值 7.0:
7.0?
您可以將多個張量傳遞給?tf.Session.run。run?方法以透明方式處理元組或字典的任何組合,如下例所示:
print(sess.run({'ab':(a, b), 'total':total}))?
它返回的結果擁有相同的布局結構:
{'total': 7.0, 'ab': (3.0, 4.0)}?
在調用?tf.Session.run?期間,任何?tf.Tensor?都只有單個值。例如,以下代碼調用?tf.random_uniform?來生成一個?tf.Tensor,后者會生成隨機的三元素矢量(值位于?[0,1)?區間內):
vec = tf.random_uniform(shape=(3,)) out1 = vec + 1 out2 = vec + 2 print(sess.run(vec)) print(sess.run(vec)) print(sess.run((out1, out2)))?
每次調用?run?時,結果都會顯示不同的隨機值,但在單個?run?期間(out1?和?out2?接收到相同的隨機輸入值),結果顯示的值是一致的:
[ 0.52917576 ?0.64076328 ?0.68353939] [ 0.66192627 ?0.89126778 ?0.06254101] (array([ 1.88408756, ?1.87149239, ?1.84057522], dtype=float32),array([ 2.88408756, ?2.87149239, ?2.84057522], dtype=float32) )?
部分 TensorFlow 函數會返回?tf.Operations,而不是?tf.Tensors。對指令調用?run?的結果是?None。您運行指令是為了產生副作用,而不是為了檢索一個值。這方面的例子包括稍后將演示的初始化和訓練操作。
?
?
總結
以上是生活随笔為你收集整理的DL框架之TensorFlow:深度学习框架TensorFlow Core(低级别TensorFlow API)的简介、安装、使用方法之详细攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NLP:基于textrank4zh库对文
- 下一篇: NLP:基于snownlp库对文本实现提