人工智能AI培訓_TensorFlow 開發基礎
1.TensorFlow是什么
TensorFlow是谷歌開源的第二代用于數字計算的軟件庫,它可以很好的支持深度學習的各種算法,但它的應用不局限于深度學習,可以支持多種計算平臺,系統穩定性較高。為了更好理解它,從以下幾個方面介紹:
1)TensorFlow是一個采用數據流圖(data flow graphs),用于數值計算的開源軟件庫。
2)從命名來理解:Tensor(張量)意味著N維數組,Flow(流)意味 著基于數據流圖的計算。Tensorflow運行過程就是張量從圖的一端流動到另一端的計算過程。
3)TensorFlow的開發過程中,重點在于構建執行流圖。也就是:“Data Flow Graphs”,表示TensorFlow是一種基于圖的計算框架,其中節點(Nodes)在圖中表示數學操作,線(Edges)則表 示在節點間相互聯系的多維數據數組,即張量(Tensor),這種基于流的架構讓 TensorFlow具有非常高的靈活性。
2.TensorFlow的特點
1)真正的可移植性
引入各種計算設備的支持包括CPU/GPU/TPU,以及能夠很好地運行在移動端,如安卓、ios、等等
2)多語言支持
Tensorflow 有一個合理的c++使用界面,也有一個易用的python使用界面來構建和執行你的graphs,你可以直接寫python/c++程序。
3)高度的靈活性與效率
TensorFlow是一個采用數據流圖(data flow graphs),用于數值計算的開源軟件庫能夠靈活進行組裝圖,執行圖。隨著開發的進展,Tensorflow的效率不算在提高
4)支持
TensorFlow 由谷歌提供支持,谷歌投入了大量精力開發 TensorFlow,它希望 TensorFlow 成為機器學習研究人員和開發人員的通用語言
3.TensorFlow可以做什么
自動駕駛小車
生成音樂
圖像識別
語音識別
語言模型
人體行為識別
定理證明
拿來玩馬里奧賽車…
4.TensorFlow計算過程
?
TensorFlow基于數據流圖,用于大規模分布式數值計算的開源框架。節點表示某種抽象的計算,邊表示節點之間相互聯系的張量。
TensorFlow是一個通過計算圖的形式來表述計算的編程系統,是以張量(tensor)在計算圖(graph)上流動(flow)的方式實現和執行機器學習/深度學習算法的框架。
5.TensorFlow架構
下圖是TF的系統架構,從底向上分為設備管理和通信層、數據操作層、圖計算層、API接口層、應用層。其中設備管理和通信層、數據操作層、圖計算層是TF的核心層。
?
底層設備通信層負責網絡通信和設備管理。設備管理可以實現TF設備異構的特性,支持CPU、GPU、Mobile等不同設備。網絡通信依賴gRPC通信協議實現不同設備間的數據傳輸和更新。
第二層是Tensor的OpKernels實現。這些OpKernels以Tensor為處理對象,依賴網絡通信和設備內存分配,實現了各種Tensor操作或計算。Opkernels不僅包含MatMul等計算操作,還包含Queue等非計算操作。Kernel層可以跑在cpu上也可以跑在gpu上。
第三層是圖計算層(Graph),包含本地計算流圖和分布式計算流圖的實現。Graph模塊包含Graph的創建、編譯、優化和執行等部分,Graph中每個節點都是OpKernels類型表示。
第四層是API接口層。Tensor C API是對TF功能模塊的接口封裝,便于其他語言平臺調用。
第四層以上是應用層。不同編程語言在應用層通過API接口層調用TF核心功能實現相關實驗和應用。
TensorFlow的內核引擎使用C++實現的,效率是很高的。TensorFlow的內核封裝實現了NN、CNN等基本機器學習算法。前端應用層支持Python或C++,一般用Python(AI領域第一編程語言)。在應用層,如果使用了其他的Python耗時操作(如數據預處理等),可能效率會比較低,但這不是TensorFlow造成的。
6.TensorFlow開發環境搭建
推薦使用Anaconda3+Pycharm來開發,安裝過程可參考以下博客文章
https://blog.csdn.net/albert201605/article/details/79090620/
7.TensorFlow簡單示例
'''
1.引入tensorflow
2.定義常量、變量
3.創建Session會話
4.調用Session中的run()方法來運行,得出結果
5.關閉seession
'''
#引入tensorflow
import tensorflow as tf
#定義常量
hello = tf.constant("hello,tensorflow")
a = tf.constant(10)
b = tf.constant(20)
with tf.Session() as sess:
print(sess.run(hello))
print(sess.run(a + b))