1、TensorFlow簡介
TensorFlow是目前最為流行的深度學(xué)習(xí)框架,是人工智能領(lǐng)域第一主要工具,迭代版本共有0.1,1.0,和2.0三個(gè)版本,本章主要針對最新的2.0版本進(jìn)行講解和學(xué)習(xí)。它是一個(gè)用于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的端到端開源平臺。
15年9月發(fā)布0.1版本;17年2月發(fā)布1.0版本;19年3月發(fā)布2.0版本。15年同類型框架:
Ski-learn: Machine Learning, 不支持GPU;
Caffe: 第一個(gè)面向深度學(xué)習(xí)的框架,但不支持自動求導(dǎo);
Keras: 只提供API接口;
Torch: Lua語言;
Teano: 開發(fā)調(diào)試難。
當(dāng)下同類型框架:
Caffe: Facebook
Caffe2: PyTorch(最新版本的Caffe2 作為PyTorch的C++后端已經(jīng)并入到PyTorch里去)。
Torch--PyTorch。PyTorch當(dāng)下非常流行的框架,集合了Torch和Caffe2,F(xiàn)acebook主推。
Teano: Google推出 Tensorflow1.0 ----Tensorflow2.0。

2、V1.0與PyTorch1.0對比
與Tensorflow1.0版本同一時(shí)期PyTorch1.0版本發(fā)布。
Tensorflow1.0與PyTorch1.0版本的對比:
?
3、V1.0的弊端
TensorFlow1.0里在創(chuàng)建了Tensor之后,不能直接返回結(jié)果。 而是需要?jiǎng)?chuàng)建session會話機(jī)制,包含graph的概念在里面,而且需要session.run 才能運(yùn)行。 這種風(fēng)格更像是一種硬件編程語言VHDL。
與PyTorch等一些簡單的框架相比,TensorFlow1.0 徒增了以上概念,用戶使用起來非常的困擾。
TensorFlow1.0調(diào)試?yán)щy,API混亂,入門困難。入了門使用起來依舊困難,導(dǎo)致很多研究人員轉(zhuǎn)向了PyTorch。
4、V2.0 coming
TF+Keras:
較大的特性(Easy to use): 去掉了graph 和session機(jī)制。變的像Python,PyTorch一樣所見即所得。
主要改進(jìn)點(diǎn):
Session.run:圖和會話機(jī)制;
Tf.control_dependencies:實(shí)時(shí)控制的概念;
Tf.global_variables_initializer;
Tf.cond:分支控制的概念原本可以通過python中if,else等語句來完成;
Tf.while_loop 。
對比發(fā)現(xiàn)跟PyTorch的風(fēng)格很相似:

import TensorFlow as tf
a=tf.constant(1.)
b=tf.constant(3.)
c=tf.add(a,b)
print(float(c))
TensorFlow1.0會將大量的時(shí)間花費(fèi)在這些冗余的概念編寫上,而忽略對深度學(xué)習(xí)算法的研究。諸如以下所列出的抽象的概念將一去不復(fù)返。
計(jì)算圖Graph
會話Session
變量管理Variable Scope與共享reuse
Define-and-run
本課程假設(shè)你對TensorFlow一無所知,即使知道一些TensorFlow1.0中的概念,但是在2.0中基本上用不到。因此今后不需要我們對TensorFlow1.0再進(jìn)行學(xué)習(xí)和了解。
5、TensorFlow2.0簡介
TensorFlow2.0包括了TensorFlow核心庫,JavaScript, Lite, Extended。構(gòu)成了TensorFlow的一個(gè)完整的生態(tài)系統(tǒng)。
TensorFlow核心庫:
使初學(xué)者和專家可以輕松的創(chuàng)建機(jī)器學(xué)習(xí)模型。
TensorFlow的高級API基于Keras API標(biāo)準(zhǔn),用于定義和訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
Keras通過用戶友好的API實(shí)現(xiàn)快速原型設(shè)計(jì),最先進(jìn)的研究和生產(chǎn)。
5.1、JavaScript
TensorFlow.js:是一個(gè)用于在JavaScript中開發(fā)和訓(xùn)練ML模型,并在瀏覽器或Node.js上部署的庫。
運(yùn)行現(xiàn)有模型:使用官方TensorFlow.js模型或者轉(zhuǎn)換Python模型。
重新訓(xùn)練現(xiàn)有模型:使用Transfer Learning自定義模型。
使用JavaScript開發(fā)ML:使用靈活直觀的API直接在JavaScript中構(gòu)建和訓(xùn)練模型,TensorFlow.js。
5.2、TensorFlow Lite
TensorFlow Lite:是一個(gè)用于設(shè)備推理的開源深度學(xué)習(xí)框架。它可以滿足在移動和物聯(lián)網(wǎng)設(shè)備上部署機(jī)器學(xué)習(xí)模型。
選擇一個(gè)模型:選擇新模型或者重新訓(xùn)練現(xiàn)有模型
兌換:使用TensorFlow Lite轉(zhuǎn)換器將TensorFlow模型轉(zhuǎn)換為壓縮的平緩沖區(qū)
部署:獲取壓縮的.tflite文件并將其加載到移動或嵌入式設(shè)備中。
優(yōu)化:通過將32位浮點(diǎn)數(shù)轉(zhuǎn)換為更高效的8位整數(shù)或在GPU上運(yùn)行來進(jìn)行量化。
5.3、TensorFlow Extended
TensorFlow Extended (TFX):是用于部署生產(chǎn)ML管道的端到端平臺,當(dāng)訓(xùn)練好的模型準(zhǔn)備從研究轉(zhuǎn)移到生產(chǎn)時(shí),使用TFX創(chuàng)建和管理生產(chǎn)管道。
TensorFlow數(shù)據(jù)驗(yàn)證:TFDV可幫助開發(fā)人員大規(guī)模了解,驗(yàn)證和監(jiān)控其ML數(shù)據(jù)。
TensorFlow變換:將數(shù)據(jù)預(yù)處理成合適的格式。
TensorFlow模型分析:TFMA使開發(fā)人員能夠計(jì)算和可視化模型的評估指標(biāo)。
TensorFlow服務(wù):輕松部署新算法和實(shí)驗(yàn),同時(shí)保持相同的服務(wù)器架構(gòu)和API。
6、為什么使用TensorFlow
TensorFlow最為當(dāng)下最流行的框架主要因?yàn)橐幌聨讉€(gè)優(yōu)勢:
支持GPU加速
支持自動求導(dǎo)
深度學(xué)習(xí)API
7、使用TensorFlow
7.1、GPU加速
支持GPU加速:對矩陣的加減乘除有一個(gè)并行的運(yùn)算加速。
?
7.2、自動求導(dǎo)
TensorFlow框架的另一個(gè)優(yōu)勢就是自動求導(dǎo):
?
7.3、深度學(xué)習(xí)API
TensorFlow框架提供大量深度學(xué)習(xí)API:
tf.matmul
tf.nn.conv2d
tf.nn.relu
tf.nn.maxpool2d
tf.nn.sigmoid
tf.nn.softmax
layers.Dense
layers.Conv2D
layers.LSTM
layers.ReLU
layers.MaxPool2D
本實(shí)驗(yàn)利用網(wǎng)上已有的北京房價(jià)數(shù)據(jù)集預(yù)測了北京的房價(jià),實(shí)現(xiàn)了TensorFlow的線性回歸應(yīng)用。