TensorFlow 是由谷歌構建的用于訓練神經網絡的開源機器學習軟件。TensorFlow 的神經網絡以有狀態(tài)數據流圖的形式表示。圖中的每個節(jié)點表示神經網絡在多維數組上執(zhí)行的操作。這些多維數組通常稱為“張量(tensors)”,因此命名為“TensorFlow”。
TensorFlow 是一個深度學習軟件系統(tǒng)。根據谷歌機器學習人工智能系統(tǒng)中的排名(RankBrain),TensorFlow 可以很好地用于信息檢索。TensorFlow 可以執(zhí)行圖像識別,如谷歌的?Inception,以及人類語言的音頻識別。它也有助于解決其他不特定于機器學習的問題,如偏微分方程。
TensorFlow 架構允許部署在桌面、服務器或移動設備中的多個 CPU 或 GPU?上。還有與?CUDA?集成的擴展,CUDA 是 Nvidia 的一個并行計算平臺。它可讓部署在 GPU 上的用戶直接訪問虛擬指令集和 GPU 的其他元素,這對于并行計算任務是必需的。
在本教程中,您將安裝“只支持 CPU”的 TensorFlow 版本。這對于那些想要安裝和使用 TensorFlow 的人來說是非常理想的,不需要依賴 Nvidia 顯卡或者不需要運行關鍵性能的應用程序。
您可以通過以下幾種方式安裝 TensorFlow。每種方法都有不同的用例和開發(fā)環(huán)境:
Python 和 Virtualenv:在此方法中,您將安裝 TensorFlow 并在 Python 虛擬環(huán)境中使用 TensorFlow 所需的所有包。這將把您的 TensorFlow 環(huán)境與同一臺機器上的其他 Python 程序隔離開來。
Native pip:在此方法中,您將在系統(tǒng)全局中安裝 TensorFlow。這是推薦給多用戶系統(tǒng)上使用 TensorFlow 的那些人。這種安裝方法不會在包環(huán)境中隔離 TensorFlow,并且可能會干擾其他 Python 安裝或庫。
Docker:Docker 是一個容器運行時環(huán)境,它將內容完全隔離在系統(tǒng)上預先存在的包中。在這個方法中,您使用包含 TensorFlow 及其所有依賴項的 Docker 容器。這種方法非常適合將 TensorFlow 合并到已經使用 Docker 的更大的應用程序體系結構中。但是這樣做的話 Docker 鏡像將相當大。
在本教程中,您將在 Python 虛擬環(huán)境 virtualenv 中安裝 TensorFlow。該方法將 TensorFlow 安裝隔離,并快速啟動和運行。一旦完成安裝,您將通過運行一個簡單的 TensorFlow 程序來驗證安裝是否成功,然后使用 TensorFlow 來執(zhí)行圖像識別。
安裝準備
在開始本教程之前,您需要準備以下內容:
一個至少 1GB 內存的 Ubuntu 16.04 服務器,根據?Ubuntu 16.04 初始化服務器設置指南進行設置,包括 sudo 非 root 用戶和防火墻。您需要至少 1GB 內存的系統(tǒng)才能成功地完成本教程的最后一個示例。
安裝 Python 3.3 或更高版本以及虛擬環(huán)境 virtualenv。按照如何在 Ubuntu 16.04 上安裝 Python 3?教程以配置 Python 和 virtualenv。
安裝 Git,您可以通過以下方式來實現,如何在 Ubuntu 16.04 上安裝 Git。您將使用它來下載一個示例存儲庫。
?
步驟 1 — 安裝 TensorFlow
在此步驟中,我們將創(chuàng)建一個虛擬環(huán)境并安裝 TensorFlow。
首先,創(chuàng)建一個名為?tf-demo?的項目目錄:
$?mkdir?~/tf-demo
導航到新創(chuàng)建的?tf-demo?目錄下:
$?cd?~/tf-demo
然后創(chuàng)建一個名為?tensorflow-dev?的新虛擬環(huán)境。運行以下命令創(chuàng)建環(huán)境:
$?python3?-m?venv?tensorflow-dev
這將創(chuàng)建一個新的?tensorflow-dev?目錄,該目錄將包含環(huán)境被激活時需要安裝的所有包。它還包括?pip?和一個獨立版本的 Python。
現在激活你的虛擬環(huán)境:
$?source?tensorflow-dev/bin/activate
一旦激活,你將會在你的終端看到如下內容:
(tensorflow-dev)username@hostname:~/tf-demo?$
現在可以在虛擬環(huán)境中安裝 TensorFlow。
運行以下命令安裝和升級到?PyPi?中最新版本的 TensorFlow:
(tensorflow-dev)?$?pip3?install?--upgrade?tensorflow
TensorFlow 將開始安裝:
OutputCollecting?tensorflow??Downloading?tensorflow-1.4.0-cp36-cp36m-macosx_10_11_x86_64.whl?(39.3MB)????100%?|████████████████████████████████|?39.3MB?35kB/s...Successfully?installed?bleach-1.5.0?enum34-1.1.6?html5lib-0.9999999?markdown-2.6.9?numpy-1.13.3?protobuf-3.5.0.post1?setuptools-38.2.3?six-1.11.0?tensorflow-1.4.0?tensorflow-tensorboard-0.4.0rc3?werkzeug-0.12.2?wheel-0.30.0
如果你希望隨時關閉虛擬環(huán)境,使用下面的命令:
$?deactivate
如果要重新激活環(huán)境,導航至項目目錄并運行?source?tensorflow-dev/bin/activate.
現在,您已經安裝了 TensorFlow,讓我們確認一下 TensorFlow 是否安裝成功。
?
步驟 2 — 驗證安裝是否成功
為了驗證 TensorFlow 是否安裝成功,我們將在 TensorFlow 中使用非 root 用戶權限運行一個的簡單程序。我們將使用慣用的初學者示例"Hello, world!"作為一種驗證形式來驗證。我們將使用 Python 的交互式控制臺(Python's interactive console)來創(chuàng)建這個程序,而不是創(chuàng)建一個 Python 文件。
要編寫程序,請啟動 Python 解釋器:
(tensorflow-dev)?$?python
您將會在終端看到如下的提示
>>>
這是 Python 解釋器的提示符,這表明它已經準備好讓您開始輸入一些 Python 語句。
首先,輸入這一行代碼來導入 TensorFlow 包,并將其作為本地變量?tf。輸入代碼后按回車鍵:
>>>?import?tensorflow?as?tf
接下來,添加這行代碼來設置信息"Hello, world!":
>>>?hello?=?tf.constant("Hello,?world!")
然后創(chuàng)建一個新的 TensorFlow 會話并將其分配給變量?sess:
>>>?sess?=?tf.Session()
注意:根據您的環(huán)境,您可能會看到如下輸出:
Output2017-06-18?16:22:45.956946:?W?tensorflow/core/platform/cpu_feature_guard.cc:45]?The?TensorFlow?library?wasn't?compiled?to?use?SSE4.1?instructions,?but?these?are?available?on?your?machine?and?could?speed?up?CPU?computations.2017-06-18?16:22:45.957158:?W?tensorflow/core/platform/cpu_feature_guard.cc:45]?The?TensorFlow?library?wasn't?compiled?to?use?SSE4.2?instructions,?but?these?are?available?on?your?machine?and?could?speed?up?CPU?computations.2017-06-18?16:22:45.957282:?W?tensorflow/core/platform/cpu_feature_guard.cc:45]?The?TensorFlow?library?wasn't?compiled?to?use?AVX?instructions,?but?these?are?available?on?your?machine?and?could?speed?up?CPU?computations.2017-06-18?16:22:45.957404:?W?tensorflow/core/platform/cpu_feature_guard.cc:45]?The?TensorFlow?library?wasn't?compiled?to?use?AVX2?instructions,?but?these?are?available?on?your?machine?and?could?speed?up?CPU?computations.2017-06-18?16:22:45.957527:?W?tensorflow/core/platform/cpu_feature_guard.cc:45]?The?TensorFlow?library?wasn't?compiled?to?use?FMA?instructions,?but?these?are?available?on?your?machine?and?could?speed?up?CPU?computations.
這告訴你,你有一個指令集(instruction set),它可以繼續(xù)優(yōu)化,以獲得更好的 TensorFlow 性能。如果你看到這個,你可以放心地忽略它并繼續(xù)下面的步驟。
最后,輸入這一行代碼,打印出在之前的代碼行中構建的?hello?TensorFlow 會話的結果:
>>>?print(sess.run(hello))
您將在控制臺中看到如下輸出:
OutputHello,?world!
這表明一切都正常,您可以開始使用 TensorFlow 來做一些有趣的事情。
通過按下?CTRL+D?退出 Python 交互式控制臺。
現在讓我們使用 TensorFlow 的圖像識別 API 來熟悉 TensorFlow 吧。
?
步驟3 — 使用 TensorFlow 進行圖像識別
現在已經安裝了 TensorFlow,通過運行一個簡單的程序來驗證一下,讓我們看看 TensorFlow 的圖像識別功能。
為了給圖像分類,你需要訓練一個模型。然后您需要編寫一些代碼來使用該模型。要了解更多有關這些概念的知識,您可以看一看機器學習的介紹 (An Introduction to Machine Learning)。
TensorFlow 提供了模型和示例的存儲庫,包括代碼和用于對圖像進行分類的訓練模型。
使用 Git 將 TensorFlow 模型倉庫從 GitHub 克隆到您的項目目錄中:
(tensorflow-dev)?$?git?clone?https://github.com/tensorflow/models.git
當 Git 將存儲庫檢出新文件夾?models?時,您將看到以下輸出:
OutputCloning?into?'models'...remote:?Counting?objects:?8785,?done.remote:?Total?8785?(delta?0),?reused?0?(delta?0),?pack-reused?8785Receiving?objects:?100%?(8785/8785),?203.16?MiB?|?24.16?MiB/s,?done.Resolving?deltas:?100%?(4942/4942),?done.Checking?connectivity...?done.
切換到?models/tutorials/image/imagenet?目錄:
(tensorflow-dev)?$?cd?models/tutorials/image/imagenet
此目錄包含?classify_image.py?文件,它使用 TensorFlow 來識別圖像。這個程序在第一次運行時會從?tensorflow.org?下載一個經過訓練的模型。下載該模型需要您的磁盤有 200MB 的可用空間。
在本例中,我們將對預處理好的熊貓圖像進行分類。執(zhí)行這條命令以運行圖像分類器程序:
(tensorflow-dev)?$?python?classify_image.py
您將看到以下輸出:
Outputgiant?panda,?panda,?panda?bear,?coon?bear,?Ailuropoda?melanoleuca?(score?=?0.89107)indri,?indris,?Indri?indri,?Indri?brevicaudatus?(score?=?0.00779)lesser?panda,?red?panda,?panda,?bear?cat,?cat?bear,?Ailurus?fulgens?(score?=?0.00296)custard?apple?(score?=?0.00147)earthstar?(score?=?0.00117)
您已經使用了 TensorFlow 的圖像識別功能對您的第一個圖像進行了分類。
如果您想要使用另一個圖像,可以通過將?-- image_file?參數添加到?python3 classify_image.py?中來實現。對于這個參數,您將需要傳入圖像文件的絕對路徑。
?
最后
您已經在 Python 虛擬環(huán)境中安裝了 TensorFlow,并通過運行幾個示例驗證了 TensorFlow 的運行情況?,F在您擁有了一些工具,它們可以讓您探索其他項目,包括卷積神經網絡和?Word Embeddings。
TensorFlow 的開發(fā)者指南是個非常好的資源和手冊。您還可以探索?Kaggle,這是一個檢驗機器學習概念實際應用的競爭平臺,您與其他機器學習、數據科學和統(tǒng)計愛好者進行競賽。他們有一個優(yōu)秀的維基主頁,你可以看到和分享一些解決方案,其中一些是在統(tǒng)計和機器學習技術的前沿思想。
?
評論
查看更多