從框架優缺點說起,這是一份TensorFlow入門極簡教程

2020-12-04 機器之心Pro

隨著 TensorFLow 在研究及產品中的應用日益廣泛,很多開發者及研究者都希望能深入學習這一深度學習框架。而在昨天機器之心發起的框架投票中,2144 位參與者中有 1441 位都在使用 TensorFlow 框架,是所有框架中使用率最高的。但 TensorFLow 這種靜態計算圖有一定的學習成本,因此也阻擋了很多初學者入坑。本文介紹了學習 TensorFlow 的系列教程,旨在通過簡單的理論與實踐幫助初學者一步步掌握 TensorFlow 的編程技巧。這一系列教程分為 6 部分,從為什麼選擇 TensorFlow 到卷積神經網絡的實現,介紹了初學者所需要的技能。機器之心在本文介紹了 PyTorch 和 Caffe 等深度學習框架的優缺點及 TensorFlow 基礎,包括靜態計算圖、張量、TensorBoard 可視化和模型參數的保存等。

機器之心此前也介紹過很多 TensorFlow 的學習資源,讀者可結合這些資源閱讀該系列教程:

學習了!谷歌今日上線基於 TensorFlow 的機器學習速成課程(中文版)機器之心 GitHub 項目:從零開始用 TensorFlow 搭建卷積神經網絡教程 | 從零開始:TensorFlow 機器學習模型快速部署指南分布式 TensorFlow 入坑指南:從實例到代碼帶你玩轉多機器深度學習三天速成!香港科技大學 TensorFlow 課件分享TensorFlow 從基礎到實戰:一步步教你創建交通標誌分類神經網絡為什麼選擇 TensorFlow?在本文中,我們將對比當前最流行的深度學習框架(包括 Caffe、Theano、PyTorch、TensorFlow 和 Keras),幫助你為應用選擇最合適的框架。

1. Caffe:第一個主流產品級深度學習庫,於 2014 年由 UC Berkeley 啟動。

優點:

快速支持 GPU漂亮的 Matlab 和 Python 接口缺點:

不靈活。在 Caffe 中,每個節點被當做一個層,因此如果你想要一種新的層類型,你需要定義完整的前向、後向和梯度更新過程。這些層是網絡的構建模塊,你需要在無窮無盡的列表中進行選擇。(相反,在 TensorFlow 中,每個節點被當做一個張量運算例如矩陣相加、相乘或卷積。你可以輕易地定義一個層作為這些運算的組合。因此 TensorFlow 的構建模塊更小巧,允許更靈活的模塊化。)需要大量的非必要冗長代碼。如果你希望同時支持 CPU 和 GPU,你需要為每一個實現額外的函數。你還需要使用普通的文本編輯器來定義你的模型。真令人頭疼!幾乎每個人都希望程序化地定義模型,因為這有利於不同組件之間的模塊化。有趣的是,Caffe 的主要架構師現在在 TensorFlow 團隊工作。專一性。僅定位在計算機視覺(但做得很不錯)。不是以 Python 編寫!如果你希望引入新的變動,你需要在 C++和 CUDA 上編程(對於更小的變動,你可以使用它的 Python 和 Matlab 接口)。糟糕的文檔。安裝比較困難!有大量的依賴包。只有少量種類的輸入格式,僅有一種輸出格式 HDF5(雖然你總是可以使用它的 Python/C++/Matlab 接口來運行,並從中得到輸出數據)。不適用於構建循環網絡。2. Theano:由蒙特婁大學研究團隊構建。Theano 的頂層構建了數值開源深度庫,包括 Keras、Lasagne 和 Blocks。Yoshua Bengio 在 2017 年 9 月 28 日宣布,Theano 的開發將終止。因此實際上 Theano 已死!

優點:

計算圖的抽象很漂亮(可媲美 TensorFlow)為 CPU 和 GPU 都做了優化很好地適應數值優化任務高級封裝(Keras、Lasagne)缺點:

原始的 Theano 只有比較低級的 APIimport numpy for _ in range(T): h = torch.matmul(W, h) + b大型模型可能需要很長的編譯時間不支持多 GPU錯誤信息可能沒有幫助(有時候令人懊惱)3. Pytorch:2017 年 1 月,Facebook 將 Python 版本的 Torch 庫(用 Lua 編寫)開源。

優點:

提供動態計算圖(意味著圖是在運行時生成的),允許你處理可變長度的輸入和輸出,例如,在使用 RNN 時非常有用。另一個例子是,在 PyTorch 中,可以使用標準 Python 語法編寫 for 循環語句。大量預訓練模型大量易於組合的模塊化組件易於編寫自己的圖層類型,易於在 GPU 上運行「Tensorboard」缺少一些關鍵功能時,「Losswise」可以作為 Pytorch 的替代品缺點:

正式文檔以外的參考資料/資源有限無商業支持4. Tensorflow:由較低級別的符號計算庫(如 Theano)與較高級別的網絡規範庫(如 Blocks 和 Lasagne)組合而成。

優點:

由谷歌開發、維護,因此可以保障支持、開發的持續性。巨大、活躍的社區網絡訓練的低級、高級接口「Tensorboard」是一款強大的可視化套件,旨在跟蹤網絡拓撲和性能,使調試更加簡單。用 Python 編寫(儘管某些對性能有重要影響的部分是用 C++實現的),這是一種頗具可讀性的開發語言支持多 GPU。因此可以在不同的計算機上自由運行代碼,而不必停止或重新啟動程序比基於 Theano 的選項更快的模型編譯編譯時間比 Theano 短TensorFlow 不僅支持深度學習,還有支持強化學習和其他算法的工具。缺點:

計算圖是純 Python 的,因此速度較慢圖構造是靜態的,意味著圖必須先被「編譯」再運行5. Keras:Keras 是一個更高級、對用戶最友好的 API,具有可配置的後端,由 Google Brain 團隊成員 Francis Chollet 編寫和維護。

優點:

提供高級 API 來構建深度學習模型,使其易於閱讀和使用編寫規範的文檔大型、活躍的社區位於其他深度學習庫(如 Theano 和 Tensorflow,可配置)之上使用面向對象的設計,因此所有內容都被視為對象(如網絡層、參數、優化器等)。所有模型參數都可以作為對象屬性進行訪問。例如:

model.layers[3].output 將提供模型的第三層model.layers[3].weights 是符號權重張量的列表缺點:

由於用途非常普遍,所以在性能方面比較欠缺與 Tensorflow 後端配合使用時會出現性能問題(因為並未針對其進行優化),但與 Theano 後端配合使用時效果良好不像 Tensorflow 或 PyTorch 那樣靈活TensorFlow 基礎TensorFlow 是一種採用數據流圖(data flow graphs),用於數值計算的開源軟體庫。其中 Tensor 代表傳遞的數據為張量(多維數組),Flow 代表使用計算圖進行運算。數據流圖用「結點」(nodes)和「邊」(edges)組成的有向圖來描述數學運算。「結點」一般用來表示施加的數學操作,但也可以表示數據輸入的起點和輸出的終點,或者是讀取/寫入持久變量(persistent variable)的終點。邊表示結點之間的輸入/輸出關係。這些數據邊可以傳送維度可動態調整的多維數據數組,即張量(tensor)。

計算圖與會話學習 Tensorflow 的第一步是了解它的主要特色——「計算圖」方法。基本上所有的 Tensorflow 代碼都包含兩個重要部分:

1. 創建「計算圖」,表示計算的數據流

2. 運行「會話」,執行圖中的運算

事實上,TensorFlow 將計算的定義與其執行分開。這兩個部分將在以下各節中詳細說明。在此之前,請記住第一步是導入 Tensorflolibrary!

import tensorflow as tf這樣,Python 就可以訪問 TensorFlow 的所有類、方法和符號。使用此命令,TensorFlow 庫將在別名「tf」下導入,以便以後我們可以使用它而不必每次鍵入其全稱「TensorFlow」。

相關焦點

  • Tensorflow 全網最全學習資料匯總之Tensorflow 的入門與安裝【2】
    本文將重點整理TensorFlow框架的入門和安裝教程。更多關於TensorFlow的深入介紹、應用項目以及各機器學習開源框架之間的對比等內容,請見雷鋒網的系列文章。因此這裡專門針對TensorFlow的安裝過程推薦一篇教程。4. 《真正從零開始,TensorFlow詳細安裝入門圖文教程!
  • TensorFlow極速入門
    一、前言目前,深度學習已經廣泛應用於各個領域,比如圖像識別,圖形定位與檢測,語音識別,機器翻譯等等,對於這個神奇的領域,很多童鞋想要一探究竟,這裡拋磚引玉的簡單介紹下最火的深度學習開源框架 tensorflow。
  • 英文教程太難啃?這裡有一份TensorFlow2.0中文教程
    今年 3 月份,谷歌在 Tensorflow Developer Summit 2019 大會上發布 TensorFlow 2.0 Alpha 版。作為當前最為流行的深度學習框架,2.0 Alpha 版的正式發布引人關注。近兩個月,網上已經出現了大量 TensorFlow 2.0 英文教程。在此文章中,機器之心為大家推薦一個持續更新的中文教程,以便大家學習。
  • TensorFlow極簡教程:創建、保存和恢復機器學習模型
    選自Github機器之心編譯參與:Jane W、李澤南TensorFlow 是一個由谷歌發布的機器學習框架,在這篇文章中,我們將闡述 TensorFlow 的一些本質概念。相信你不會找到比本文更簡單的介紹。
  • TensorFlow 中文資源全集,學習路徑推薦
    安裝教程,安裝之後跑起來。入門教程,簡單的模型學習和運行。實戰項目,根據自己的需求進行開發。/GitHub:https://github.com/tensorflow安裝教程中文安裝教程Mac安裝:http://www.cnblogs.com/tensorflownews/p/7298646.htmlubuntu 16.04 安裝 tensorflow-gpu:http://www.tensorflownews.com/2017/09/02/tensorflow-gpu-install-ubuntu
  • 最熱門的深度學習框架TensorFlow入門必備書籍
    其實,早在 2015 年底,谷歌就開源了內部使用的深度學習框架 TensorFlow 。眾多研究表明,Tensorflow 是研究深度學習的首選平臺。於是,很多開發者就問了,TensorFlow如此受歡迎,如果想入門學習它,要選擇哪本書呢?
  • 入門TensorFlow 2.0,這有一份簡單粗暴的中文教程:北大學霸出品
    現在,這裡有一份全中文教學的快手上手指南,基於Keras和Eager Execution(動態圖)模式,北大學霸出品,獲得TensorFlow官方認可。其名為,簡單粗暴TensorFlow 2.0。話不多說,一起來看看吧。
  • TensorFlow 資源大全中文版
    TensorFlow 是一個採用數據流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯繫的多維數據數組,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU)、伺服器、行動裝置等等。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • 玩轉TensorFlow?你需要知道這30功能
    地址是:tensorflow.org/tfx/?網址是:https://github.com/tensorflow/models20)Dopamine這是一個用於原型化強化學習算法的、易於訪問的框架風格指南:https://www.tensorflow.org/community/documentation反饋問題:https://github.com/tensorflow/tensorflow/issues?
  • 步履不停:TensorFlow 2.4新功能一覽!
    參數伺服器訓練教程           https://tensorflow.google.cn/tutorials/distribute/parameter_server_training    ClusterCoordinator           https://tensorflow.google.cn/api_docs/python
  • 在Windows中安裝Tensorflow和Kears深度學習框架
    建立Tensorflow的Anaconda虛擬環境在一臺計算機中,我們常常需要安裝很多軟體,但是每個軟體所需要的Python的關聯模塊或版本不相同。例如,我們要使用Python開發開發網站系統,安裝的網站框架可能需要Python2.X的版本,但是安裝Tensorflow需要Python3.5的版本,此時就會發生版本不一致的問題。
  • TensorFlow 2.0開源工具書,30天「無痛」上手
    機器之心報導項目作者:lyhue1991「官方文檔排布凌亂、搜索難用、API 醜陋不堪……」這是很多人對 TensorFlow 官方文檔的吐槽。但吐槽歸吐槽,到了工業界,你是無論如何也繞不開這個框架的。既然非學不可,那怎麼讓這個學習過程變得更加平滑呢?
  • 深度解讀TensorFlow,了解它的最新發展!
    Tensorboard是tensorflow內置的一個可視化工具,它通過將tensorflow程序輸出的日誌文件的信息可視化,使得tensorflow程序的理解、調試和優化更加簡單高效。Tensorboard的可視化依賴於tensorflow程序運行輸出的日誌文件,因而tensorboard和tensorflow程序在不同的進程中運行。
  • TensorFlow 2入門指南,初學者必備!
    英語原文:Getting Started with TensorFlow 2翻譯:雷鋒字幕組(贇瑾和鳴、大表哥)什麼是Tensorflow?TensorFlow是谷歌推出的深度學習框架,於2019年發布了第二版。 它是世界上最著名的深度學習框架之一,被行業專家和研究人員廣泛使用。
  • 教程| 如何用TensorFlow在安卓設備上實現深度學習推斷
    從源安裝和配置 TensorFlow(https://www.tensorflow.org/install/install_sources)。3.在 TensorFlow 目錄下運行下列命令行:bazel build tensorflow/tools/graph_transforms:transform_graphbazel-bin/tensorflow/tools/graph_transforms/transform_graph \ --in_graph=/your/.pb/file \ --outputs="output_node_name
  • TensorFlow入門簡介,新手請看這裡!
    這些數據「線」可以傳送「大小可動態調整」的多維數據數組,即「張量」(tensor)。一旦輸入端的所有張量準備好,節點將被分配到各種計算設備完成異步並行運算。  Tensorflow在GitHub上已經超過76,000顆星,而且每個月都在持續增長。  其中有很多是社區創建的教程、模型、翻譯和項目,如果您對機器學習感興趣,它是一個很好的學習源。比如,目前由TensorFlow團隊監控的Stack Overflow就是一個很好的學習社區。
  • 教程 | 如何利用TensorFlow.js部署簡單的AI版「你畫我猜」圖像識別應用
    我在 TensorFlow.js 上創建了一個教程(https://medium.com/tensorflow/a-gentle-introduction-to-tensorflow-js-dba2e5257702)。在繼續下面的工作之前,請務必先閱讀一下這個教程。下圖為該項目的處理流程:
  • TensorFlow 攜手 NVIDIA,使用 TensorRT 優化 TensorFlow Serving...
    HTTP/REST API at:localhost:8501 …$ curl -o /tmp/resnet/resnet_client.py https://raw.githubusercontent.com/tensorflow/serving/master/tensorflow_serving/example/resnet_client.py
  • 關於TensorFlow,你應該了解的9件事
    #1:TensorFlow 是一個強大的機器學習框架TensorFlow 是一個機器學習框架,如果你有大量的數據,或者你在追求人工智慧最先進的技術:深度學習、神經網絡等,它都會使你如虎添翼。它可不是數據科學界的瑞士軍刀,而是工業車床!