RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

TensorFlow是什么?如何啟動并運行TensorFlow?

lviY_AI_shequ ? 來源:未知 ? 作者:易水寒 ? 2018-07-29 11:16 ? 次閱讀

TensorFlow 是一款用于數(shù)值計算的強大的開源軟件庫,特別適用于大規(guī)模機器學習的微調(diào)。 它的基本原理很簡單:首先在 Python 中定義要執(zhí)行的計算圖(例如圖 9-1),然后 TensorFlow 使用該圖并使用優(yōu)化的 C++ 代碼高效運行該圖。

最重要的是,Tensorflow 可以將圖分解為多個塊并在多個 CPUGPU 上并行運行(如圖 9-2 所示)。 TensorFlow 還支持分布式計算,因此您可以在數(shù)百臺服務器上分割計算,從而在合理的時間內(nèi)在龐大的訓練集上訓練龐大的神經(jīng)網(wǎng)絡(請參閱第 12 章)。 TensorFlow 可以訓練一個擁有數(shù)百萬個參數(shù)網(wǎng)絡,訓練集由數(shù)十億個具有數(shù)百萬個特征的實例組成。 這應該不會讓您吃驚,因為 TensorFlow 是 由Google 大腦團隊開發(fā)的,它支持谷歌的大量服務,例如 Google Cloud Speech,Google Photos 和 Google Search。

當 TensorFlow 于 2015 年 11 月開放源代碼時,已有許多深度學習的流行開源庫(表 9-1 列出了一些),公平地說,大部分 TensorFlow 的功能已經(jīng)存在于一個庫或另一個庫中。 盡管如此,TensorFlow 的整潔設計,可擴展性,靈活性和出色的文檔(更不用說谷歌的名字)迅速將其推向了榜首。 簡而言之,TensorFlow 的設計靈活性,可擴展性和生產(chǎn)就緒性,現(xiàn)有框架可以說只有其中三種可用。 這里有一些 TensorFlow 的亮點:

它不僅在 Windows,Linux 和 MacOS 上運行,而且在移動設備上運行,包括 iOSAndroid。

它提供了一個非常簡單的 Python API,名為 TF.Learn2(tensorflow.con trib.learn),與 Scikit-Learn 兼容。正如你將會看到的,你可以用幾行代碼來訓練不同類型的神經(jīng)網(wǎng)絡。之前是一個名為 Scikit Flow(或 Skow)的獨立項目。

它還提供了另一個簡單的稱為 TF-slim(tensorflow.contrib.slim)的 API 來簡化構建,訓練和求出神經(jīng)網(wǎng)絡。

其他幾個高級 API 已經(jīng)在 TensorFlow 之上獨立構建,如Keras或Pretty Tensor。

它的主要 Python API 提供了更多的靈活性(以更高復雜度為代價)來創(chuàng)建各種計算,包括任何你能想到的神經(jīng)網(wǎng)絡結構。

它包括許多 ML 操作的高效 C ++ 實現(xiàn),特別是構建神經(jīng)網(wǎng)絡所需的 C++ 實現(xiàn)。還有一個 C++ API 來定義您自己的高性能操作。

它提供了幾個高級優(yōu)化節(jié)點來搜索最小化損失函數(shù)的參數(shù)。由于 TensorFlow 自動處理計算您定義的函數(shù)的梯度,因此這些非常易于使用。這稱為自動分解(或autodi)。

它還附帶一個名為 TensorBoard 的強大可視化工具,可讓您瀏覽計算圖表,查看學習曲線等。

Google 還推出了云服務來運行 TensorFlow 表。

最后,它擁有一支充滿熱情和樂于助人的開發(fā)團隊,以及一個不斷成長的社區(qū),致力于改善它。它是 GitHub 上最受歡迎的開源項目之一,并且越來越多的優(yōu)秀項目正在構建之上(例如,查看https://www.tensorflow.org/或https://github.com/jtoy/awesome-tensorflow)。 要問技術問題,您應該使用http://stackoverflow.com/并用tensorflow標記您的問題。您可以通過 GitHub 提交錯誤和功能請求。有關一般討論,請加入Google 小組。

在本章中,我們將介紹 TensorFlow 的基礎知識,從安裝到創(chuàng)建,運行,保存和可視化簡單的計算圖。 在構建第一個神經(jīng)網(wǎng)絡之前掌握這些基礎知識很重要(我們將在下一章中介紹)。

安裝

讓我們開始吧!假設您按照第 2 章中的安裝說明安裝了 Jupyter 和 Scikit-Learn,您可以簡單地使用pip來安裝 TensorFlow。 如果你使用virtualenv創(chuàng)建了一個獨立的環(huán)境,你首先需要激活它:

$ cd $ML_PATH #Your ML working directory(e.g., $HOME/ml)$ source env/bin/activate

下一步,安裝 Tensorflow。

$ pip3 install --upgrade tensorflow

對于 GPU 支持,你需要安裝tensorflow-gpu而不是tensorflow。具體請參見 12 章內(nèi)容。

為了測試您的安裝,請輸入一下命令。其輸出應該是您安裝的 Tensorflow 的版本號。

$ python -c 'import tensorflow; print(tensorflow.__version__)'1.0.0

創(chuàng)造第一個圖譜,然后運行它

import tensorflow as tf x = tf.Variable(3, name="x") y = tf.Variable(4, name="y") f = x*x*y + y + 2

這就是它的一切! 最重要的是要知道這個代碼實際上并不執(zhí)行任何計算,即使它看起來像(尤其是最后一行)。 它只是創(chuàng)建一個計算圖譜。 事實上,變量都沒有初始化.要求出此圖,您需要打開一個 TensorFlow 會話并使用它初始化變量并求出f。TensorFlow 會話負責處理在諸如 CPU 和 GPU 之類的設備上的操作并運行它們,并且它保留所有變量值。以下代碼創(chuàng)建一個會話,初始化變量,并求出f,然后關閉會話(釋放資源):

# way1 sess = tf.Session() sess.run(x.initializer) sess.run(y.initializer) result = sess.run(f) print(result) sess.close()

不得不每次重復sess.run() 有點麻煩,但幸運的是有一個更好的方法:

# way2 with tf.Session() as sess: x.initializer.run() y.initializer.run() result = f.eval() print(result)

在with塊中,會話被設置為默認會話。 調(diào)用x.initializer.run()等效于調(diào)用tf.get_default_session().run(x.initial),f.eval()等效于調(diào)用tf.get_default_session().run(f)。 這使得代碼更容易閱讀。 此外,會話在塊的末尾自動關閉。

你可以使用global_variables_initializer()函數(shù),而不是手動初始化每個變量。 請注意,它實際上沒有立即執(zhí)行初始化,而是在圖譜中創(chuàng)建一個當程序運行時所有變量都會初始化的節(jié)點:

# way3 # init = tf.global_variables_initializer() # with tf.Session() as sess: # init.run() # result = f.eval() # print(result)

在 Jupyter 內(nèi)部或在 Python shell 中,您可能更喜歡創(chuàng)建一個InteractiveSession。 與常規(guī)會話的唯一區(qū)別是,當創(chuàng)建InteractiveSession時,它將自動將其自身設置為默認會話,因此您不需要使用模塊(但是您需要在完成后手動關閉會話):

# way4 init = tf.global_variables_initializer() sess = tf.InteractiveSession() init.run() result = f.eval() print(result) sess.close()

TensorFlow 程序通常分為兩部分:第一部分構建計算圖譜(這稱為構造階段),第二部分運行它(這是執(zhí)行階段)。 建設階段通常構建一個表示 ML 模型的計算圖譜,然后對其進行訓練,計算。 執(zhí)行階段通常運行循環(huán),重復地求出訓練步驟(例如,每個小批次),逐漸改進模型參數(shù)。

管理圖譜

您創(chuàng)建的任何節(jié)點都會自動添加到默認圖形中:

>>> x1 = tf.Variable(1) >>> x1.graph is tf.get_default_graph() True

在大多數(shù)情況下,這是很好的,但有時您可能需要管理多個獨立圖形。 您可以通過創(chuàng)建一個新的圖形并暫時將其設置為一個塊中的默認圖形,如下所示:

>>> graph = tf.Graph() >>> with graph.as_default(): ... x2 = tf.Variable(2) ... >>> x2.graph is graph True >>> x2.graph is tf.get_default_graph() False

在 Jupyter(或 Python shell)中,通常在實驗時多次運行相同的命令。 因此,您可能會收到包含許多重復節(jié)點的默認圖形。 一個解決方案是重新啟動 Jupyter 內(nèi)核(或 Python shell),但是一個更方便的解決方案是通過運行tf.reset_default_graph()來重置默認圖。

節(jié)點值的生命周期

求出節(jié)點時,TensorFlow 會自動確定所依賴的節(jié)點集,并首先求出這些節(jié)點。 例如,考慮以下代碼:

# w = tf.constant(3) # x = w + 2 # y = x + 5 # z = x * 3 # with tf.Session() as sess: # print(y.eval()) # print(z.eval())

首先,這個代碼定義了一個非常簡單的圖。然后,它啟動一個會話并運行圖來求出y:TensorFlow 自動檢測到y(tǒng)取決于x,它取決于w,所以它首先求出w,然后x,然后y,并返回y的值。最后,代碼運行圖來求出z。同樣,TensorFlow 檢測到它必須首先求出w和x。重要的是要注意,它不會復用以前的w和x的求出結果。簡而言之,前面的代碼求出w和x兩次。所有節(jié)點值都在圖運行之間刪除,除了變量值,由會話跨圖形運行維護(隊列和讀者也保持一些狀態(tài))。變量在其初始化程序運行時啟動其生命周期,并且在會話關閉時結束。如果要有效地求出y和z,而不像之前的代碼那樣求出w和x兩次,那么您必須要求 TensorFlow 在一個圖形運行中求出y和z,如下面的代碼所示:

# with tf.Session() as sess: # y_val, z_val = sess.run([y, z]) # print(y_val) # 10 # print(z_val) # 15

在單進程 TensorFlow 中,多個會話不共享任何狀態(tài),即使它們復用同一個圖(每個會話都有自己的每個變量的副本)。 在分布式 TensorFlow 中,變量狀態(tài)存儲在服務器上,而不是在會話中,因此多個會話可以共享相同的變量。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8406

    瀏覽量

    132558
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84627
  • tensorflow
    +關注

    關注

    13

    文章

    329

    瀏覽量

    60527

原文標題:【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— 第9章 (上)啟動并運行TensorFlow

文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區(qū)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問ESP32如何運行TensorFlow模型?

    請問ESP32如何運行TensorFlow模型?
    發(fā)表于 07-09 07:30

    關于 TensorFlow

    的底層數(shù)據(jù)操作,你也可以自己寫一點c++代碼來豐富底層的操作。真正的可移植性(Portability)Tensorflow 在CPU和GPU上運行,比如說可以運行在臺式機、服務器、手機移動設備等等。想要
    發(fā)表于 03-30 19:57

    本章的目的是讓你了解和運行 TensorFlow!

    簡介本章的目的是讓你了解和運行 TensorFlow!在開始之前, 讓我們先看一段使用 Python API 撰寫的 TensorFlow 示例代碼, 讓你對將要學習的內(nèi)容有初步的印象.這段很短
    發(fā)表于 03-30 19:58

    使用 TensorFlow, 你必須明白 TensorFlow

    TensorFlow 圖描述了計算的過程. 為了進行計算, 圖必須在 會話 里被啟動. 會話 將圖的 op 分發(fā)到諸如 CPU 或 GPU 之類的 設備 上, 同時提供執(zhí)行 op 的方法. 這些方法
    發(fā)表于 03-30 20:03

    TensorFlow運行時無法加載本機

    您好,我想在AI DevCloud的計算節(jié)點中運行TensorFlow時出錯。[u19741 @ c009-n031~] $ pythonPython 3.6.3 |英特爾公司| (默認,2018年
    發(fā)表于 10-19 12:00

    Anaconda之tensorflow:深度學習之Anaconda下安裝tensorflow正確運行之史上最強攻略

    Anaconda之tensorflow:深度學習之Anaconda下安裝tensorflow正確運行之史上最強攻略
    發(fā)表于 12-21 10:40

    深度學習框架TensorFlow&TensorFlow-GPU詳解

    TensorFlow&TensorFlow-GPU:深度學習框架TensorFlow&TensorFlow-GPU的簡介、安裝、使用方法詳細攻略
    發(fā)表于 12-25 17:21

    怎么運行Faster RCNN的tensorflow代碼

    如何運行Faster RCNN的tensorflow代碼
    發(fā)表于 06-15 09:25

    情地使用Tensorflow吧!

    和GPU上運行,比如說可以運行在臺式機、服務器、手機移動設備等等。想要在沒有特殊硬件的前提下,在你的筆記本上跑一下機器學習的新想法?Tensorflow可以辦到這點。準備將你的訓練模型在多個CPU上規(guī)模
    發(fā)表于 07-22 10:13

    TensorFlow是什么

    、Caffe 和 MxNet,那 TensorFlow 與其他深度學習庫的區(qū)別在哪里呢?包括 TensorFlow 在內(nèi)的大多數(shù)深度學習庫能夠自動求導、開源、支持多種 CPU/GPU、擁有預訓練模型,支持常用
    發(fā)表于 07-22 10:14

    TensorFlow安裝和下載(超詳細)

    conda 環(huán)境: 該命令應提示: 根據(jù)要在 conda 環(huán)境中安裝的 TensorFlow 版本,輸入以下命令: 在命令行中輸入 python,輸入以下代碼: 輸出如下:在命令行中禁用
    發(fā)表于 07-22 10:25

    TensorFlow教程|常見問題

    此文檔對關于TensorFlow的一些常見問題提供了答案,如果這里沒有你問題的答案,你可能會在 社區(qū)資源 中找到它。內(nèi)容常見問題建立 TensorFlow graph運行 TensorFlow
    發(fā)表于 07-27 18:33

    在Ubuntu 18.04 for Arm上運行TensorFlow和PyTorch的Docker映像

    MKLDNN_VERBOSE=1 以驗證構建在運行基準測試時使用 oneDNN。概括AArch64 上的TensorFlow和PyTorch的Docker 映像現(xiàn)在可以在 Docker Hub 上獲取快速
    發(fā)表于 10-14 14:25

    提出一個快速啟動自己的 TensorFlow 項目模板

    簡潔而精密的結構對于深度學習項目來說是必不可少的,在經(jīng)過多次練習和 TensorFlow 項目開發(fā)之后,本文作者提出了一個結合簡便性、優(yōu)化文件結構和良好 OOP 設計的 TensorFlow 項目模板。該模板可以幫助你快速啟動
    的頭像 發(fā)表于 02-07 11:47 ?3132次閱讀
    提出一個快速<b class='flag-5'>啟動</b>自己的 <b class='flag-5'>TensorFlow</b> 項目模板

    tensorflow和python的關系_tensorflow與pytorch的區(qū)別

    Tensorflow和Python有什么關系?Tensorflow是Python的機器學習庫,Python的庫有很多,如Tensorflow、NumPy、Httpie、Django、Flask、Ansible。我們知道章魚有很多
    的頭像 發(fā)表于 12-04 14:54 ?2w次閱讀
    RM新时代网站-首页