人工智能AI培訓(xùn)_TensorFlow入門(mén)基礎(chǔ)
1.TensorFlow概述
TensorFlow是谷歌開(kāi)源的第二代用于數(shù)字計(jì)算的軟件庫(kù)。它可以很好的支持深度學(xué)習(xí)的各種算法,但它的應(yīng)用不局限于深度學(xué)習(xí),可以支持多種計(jì)算平臺(tái),系統(tǒng)穩(wěn)定性較高。
TensorFlow擁有多層級(jí)結(jié)構(gòu),可部署于各類(lèi)服務(wù)器、PC終端和網(wǎng)頁(yè)并支持GPU和TPU高性能數(shù)值計(jì)算,被廣泛應(yīng)用于谷歌內(nèi)部的產(chǎn)品開(kāi)發(fā)和各領(lǐng)域的科學(xué)研究。
TensorFlow由谷歌人工智能團(tuán)隊(duì)谷歌大腦(Google Brain)開(kāi)發(fā)和維護(hù),擁有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在內(nèi)的多個(gè)項(xiàng)目以及各類(lèi)應(yīng)用程序接口(Application Programming Interface, API)
2.TensorFlow特點(diǎn)

靈活可擴(kuò)展:TensorFlow在不同計(jì)算機(jī)上運(yùn)行:小到智能手機(jī),大到計(jì)算機(jī)集群都能擴(kuò)展,可以立刻生成你的訓(xùn)練模型。
多語(yǔ)言:支持C++,Python語(yǔ)言。
GPU:雖然TensorFlow在大型計(jì)算機(jī)集群的并行處理中,運(yùn)行性能略低于CNTK,但是在個(gè)人機(jī)器使用場(chǎng)景中,會(huì)根據(jù)機(jī)器配置自動(dòng)選擇CPU或GPU,更加友好與智能。
多平臺(tái):TensorFlow生成的模型,可以滿足更多使用者的需求。適用于Mac,Linux,Windows系統(tǒng)上開(kāi)發(fā)。滿足開(kāi)箱即用的模型使用概念。
運(yùn)算能力強(qiáng):利用了DAG圖創(chuàng)建工作流圖,優(yōu)化了計(jì)算過(guò)程。
分布式:
目前原生支持的分布式深度學(xué)習(xí)框架不多,只有 TensorFlow、CNTK、DeepLearning4J、MXNet 等。在單 GPU 的條件下,絕大多數(shù)深度學(xué)習(xí)框架都依賴于 cuDNN,因此只要硬件計(jì)算能力或者內(nèi)存分配差異不大,最終訓(xùn)練速度不會(huì)相差太大。
但是對(duì)于大規(guī)模深度學(xué)習(xí)來(lái)說(shuō),巨大的數(shù)據(jù)量使得單機(jī)很難在有限的時(shí)間完成訓(xùn)練。而TensorFlow支持分布式訓(xùn)練。
TensorFlow 的設(shè)計(jì)對(duì)不同設(shè)備間的通信優(yōu)化得不是很好,其單機(jī)的 reduction 只能用 CPU 處理,分布式的通信使用基于 socket 的 RPC,而不是速度更快的 RDMA,所以其分布式性能可能還沒(méi)有達(dá)到最優(yōu)。
3.TensorFlow應(yīng)用場(chǎng)景
- 自動(dòng)駕駛小車(chē)
- 生成音樂(lè)
- 圖像識(shí)別
- 語(yǔ)音識(shí)別
- 語(yǔ)言模型
- 人體行為識(shí)別
- 定理證明
- 拿來(lái)玩馬里奧賽車(chē)…
4.TensorFlow組成

TensorFlow是由Tensor+Flow組成,Tensor即為張量,F(xiàn)low為流動(dòng),名字的含義就是張量在流動(dòng)
5.TensorFlow計(jì)算過(guò)程

TensorFlow是一個(gè)通過(guò)計(jì)算圖的形式來(lái)表述計(jì)算的編程系統(tǒng),是以張量(tensor)在計(jì)算圖(graph)上流動(dòng)(flow)的方式實(shí)現(xiàn)和執(zhí)行機(jī)器學(xué)習(xí)/深度學(xué)習(xí)算法的框架。計(jì)算過(guò)程如下:
- 構(gòu)建計(jì)算圖:可以理解為前端工作,定義一個(gè)操作的集合,根據(jù)數(shù)據(jù)流,組織為有向無(wú)環(huán)圖。操作包含:初始化、各種加乘、讀取、賦值、網(wǎng)絡(luò)前向反饋、計(jì)算loss、梯度反向傳播等等。
- 執(zhí)行:可以理解為后端。在一個(gè)指定的gpu或是cpu上,通過(guò)Session.run()調(diào)度,運(yùn)行計(jì)算圖(C++)。一般是循環(huán)反復(fù)執(zhí)行。
- 使用有向圖的節(jié)點(diǎn)和邊共同描述數(shù)學(xué)計(jì)算。graph中的nodes代表數(shù)學(xué)操作,也可以表示數(shù)據(jù)輸入輸出的端點(diǎn)。邊表示節(jié)點(diǎn)之間的關(guān)系,傳遞操作之間互相使用的多位數(shù)組(tensors),tensor在graph中流動(dòng)——這也就是TensorFlow名字的由來(lái)。一旦節(jié)點(diǎn)相連的邊傳來(lái)了數(shù)據(jù)流,節(jié)點(diǎn)就被分配到計(jì)算設(shè)備上異步的(節(jié)點(diǎn)間)、并行的(節(jié)點(diǎn)內(nèi))執(zhí)行。
6.TensorFlow架構(gòu)

TensorFlow的內(nèi)核引擎使用C++實(shí)現(xiàn)的,效率是很高的。TensorFlow的內(nèi)核封裝實(shí)現(xiàn)了NN、CNN等基本機(jī)器學(xué)習(xí)算法。
前端應(yīng)用層支持Python或C++,一般用Python(AI領(lǐng)域第一編程語(yǔ)言)。
在應(yīng)用層,如果使用了其他的Python耗時(shí)操作(如數(shù)據(jù)預(yù)處理等),可能效率會(huì)比較低,但這不是TensorFlow造成的。
7.TensorFlow安裝
推薦使用pycharm + anaconda,安裝過(guò)程大家可以自行查詢
8.TensorFlow入門(mén)例子
'''
1.引入tensorflow
2.定義常量、變量
3.創(chuàng)建Session會(huì)話
4.調(diào)用Session中的run()方法來(lái)運(yùn)行,得出結(jié)果
5.關(guān)閉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))