目前最主流的深度框架有 TensorFlow、Pytorch 以及 Keras。其中:
-
TensorFlow 是被使用最廣泛的一個深度學習框架,已廣泛的運用在如,圖像識別、圖片分類等領域。
-
PyTorch 是一個開源的 Python 機器學習庫,基於 Torch 開發,底層由 C++實現,也被廣泛使用在人工智能領域;
-
Keras 則是 Python 編寫的高級神經網絡 API,它可以將 TensorFlow、CNTK,或是 Theano 作為后端程序來用,它的代碼簡單、易讀。
TensorFlow的核心概念
- 張量(Tensor ):TensorFlow中的基本數據對象,作為圖中的節點(Operation,提供圖當中執行的操作)的輸入輸出,在節點之間流動(Flow),因此得名。可以被理解成一個多維數組,TensorFlow 的張量與 Numpy 的數組比較相似。其中的每個元素都具有相同的數據類型,且該數據類型一定是已知的(使用 tensor 的 dtpye 屬性查看 tensor 的數據類型)。張量是有形狀的(通過 tensor 的 shape 屬性查看 tensor 的形狀),關於 tensor 的形狀有兩個術語:秩、軸(維度)。
- 秩:張量維度的數目。
- 軸(維度):軸(維度)就是我們計算機科學中數組的維度。例如,向量的維度就是 1,矩陣的維度就是 2。
張量的階

2. 計算圖:是一個有向圖,又可以叫作數據流圖(data flow graphs),是TensorFlow將計算表示為指令之間的依賴關系的一種表示法。它是 TensorFlow 操作對象(tf.Operation)與張量對象(tf.Tensor)的集合。操作對象是圖中的節點,是圖中的計算單元,張量對象是圖的邊,是在節點之間流動的數據。TensorFlow 的 3 種計算圖,分別是:
-
- 靜態計算圖:優點是高效,在分布式訓練、性能優化和生產部署方面都有優勢。定義好之后可以反復執行。
- 動態計算圖:TensorFlow 2 中 Eager Execution 模型就是采用動態計算圖方式,大大地提高了代碼的簡潔性,且非常易於調試。
- Autograph:兼顧代碼的可讀性與運行的高性能,TensorFlow 2 中提出了 Autograph只要在 Python 的函數前加上@tf.function 標簽,就可以將 Python 的函數轉換為靜態計算圖。
3.會話:TensorFlow跨一個或者過個本地或遠程設備運行數據流圖的機制。
TensorFlow 2 中幾個比較常用的 API
- tf.compact
- tf.data
- tf.image
- tf.nn
- tf.keras
- tf.lite
- tf.math
高效的實驗分析助手-TensorBoard
可以通過 Web 頁面提供查看細節與過程的功能,它將模型的細節與過程,通過瀏覽器可視化的方式進行展現,幫助使用者感知各個參數與指標的變化,把握訓練趨勢。
參考:
1. TensorFlow 2.0的API詳解:https://tensorflow.google.cn/versions/r2.0/api_docs/python/tf
2. 可視化TensorFlow運行:
TensorFlow是一個采用數據流圖,用於數值計算的開源框架。節點在圖中表示數學操作,線則表示在節點互相聯系的多維數據數組,即張量。

3.Python安裝TensorFlow常見報錯:
W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.10.1'; dlerror: libcudart.so.10.1: cannot open shared object file: No such file or directory
I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
- 問題分析與解決方式:GPU的版本與TensorFlow的版本不一致;GPU的版本與TensorFlow的對應關系參見:https://tensorflow.google.cn/install/source#gpu
I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
- 問題分析與解決方式:當前的CPU可以支持未編譯為二進制的指令AVX2 ;要想消除該提示,需要在代碼中添加兩行代碼:(用於設置TensorFlow的日志級別的)
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
