1. 程式人生 > >TensorFlow學習(1)---TensorFlow基本介紹

TensorFlow學習(1)---TensorFlow基本介紹

什麼是TensorFlow?

先看看來自TensorFlow官方網站的介紹:

TensorFlow™ 是一個開放原始碼軟體庫,用於進行高效能數值計算。藉助其靈活的架構,使用者可以輕鬆地將計算工作部署到多種平臺(CPU、GPU、TPU)和裝置(桌面裝置、伺服器叢集、移動裝置、邊緣裝置等)。TensorFlow™ 最初是由 Google Brain 團隊(隸屬於 Google 的 AI 部門)中的研究人員和工程師開發的,可為機器學習和深度學習提供強力支援,並且其靈活的數值計算核心廣泛應用於許多其他科學領域。

In my humble view,TensorFlow 是一個便於部署在各種各樣平臺上的框架,它對多種程式語言都有良好的介面,當我們想學習機器學習或者深度學習的時候,都可以使用這個工具來實現我們的想法。在TensorFlow中有幾個很重要的概念,是瞭解TensorFlow的基礎,以下就來一一介紹:

Tensor: 即張量,張量是對資料的一種描述,也就是我們平時說的·陣列,不過這個張量包括0維陣列,1維陣列,2維陣列,3維陣列,4維陣列,,,等。Tensor在TensorFlow中扮演的就是資料的角色,各式各樣的資料都表示為Tensor,在進行計算的過程中Tensor被傳向不同的結點,就像在資料流一樣,這也是TensorFlow得名的原因。

Constant: 即常量,常量可以對應原始的資料,是不會再改變的資料,即恆定的張量。

Variable: 即變數,與Tensor不同,變數是一個符號,也是組成TensorFlow中計算結點的具體物件,每個變數就是一個物件,它代表操作的一部分,它能夠用來接收資料,傳遞資料,是TensorFlow中計算和資料流動的載體和操作的載體。

計算圖:TensorFlow的一個特點就是它採用資料流圖就行計算。什麼是資料流圖呢?參看TensorFlow的官網。這裡盜用官網的一張圖:
在這裡插入圖片描述

結合剛才介紹的張量和變數,我們來分析一下這張圖:
圖中紅色的輸入以及黑線的蔓延代表著張量和張量的流動,也就是資料的流動,而資料每留至一個節點,這個節點就會變數,意味著這個節點需要的資料到達了。而每個節點可以是變數,也可以是一組操作。也就是說在TensorFlow中儲存的是計算的定義,而不是每次計算的實際資料,畢竟每次計算時資料都可能會改變,而我們已經定義好的計算流程一般是不大會變化的。

Session: 即會話,簡單地看,會話就是對操作的執行。那麼是對什麼操作呢?首先操作就是我們在計算圖中看到的結點,也就是我們自己定義的變數或運算。在完成變數和操作的定義之後,我們就可以執行它們,即Session將資料流向計算圖中的各個節點,並完成我們定義的操作。

那麼怎麼使用TensorFlow完成一次運算呢?分為兩步:構建圖和啟動圖。
構建圖:構建圖即完成我們對變數、常量的定義也就是計算圖中計算結點的定義。
啟動圖:啟動圖即計算圖的執行,也就是呼叫Session進行計算。