<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 1.?TensorFlow 基礎知識 在本章中,我將簡要介紹 TensorFlow 的代碼及其編程模型。在本章的最后,讀者可以在他們的個人計算機上安裝 TensorFlow 軟件包。 ### 開源軟件包 學術界已經對機器學習進行了數十年的調查,但直到近幾年,它的滲透率在企業中也有所增加。這要歸功于它已經擁有的大量數據以及現在可用的前所未有的計算能力。 在這種情況下,毫無疑問,在 Alphabet 的支持下,谷歌是機器學習技術在其所有虛擬計劃和產品中發揮關鍵作用的最大公司之一。 去年10月,當 Alphabet 宣布那個季度谷歌的業績,銷售額和利潤大幅增加時,首席執行官桑達皮采清楚地說:“機器學習是一種核心的,變革性的方式,我們正在重新思考我們正在做的一切”。 從技術上講,我們正面臨著谷歌不是唯一一個重要角色的時代變遷。其他技術公司,如微軟,Facebook,亞馬遜和蘋果等眾多公司也在增加對這些領域的投資。 在此背景下,幾個月前谷歌在開源許可證(Apache 2.0)下發布了 TensorFlow 引擎。想要將機器學習納入其項目和產品的開發人員和研究人員可以使用 TensorFlow,就像 Google 在內部使用 Gmail,Google 照片,搜索,語音識別等不同的商業產品一樣。 TensorFlow 最初是由 Google Brain Team 開發的,目的是進行機器學習和深度神經網絡研究,但該系統足以應用于各種其他機器學習問題。 由于我是一名工程師,而且我正在與工程師交談,因此本書將深入了解數據流圖如何表示算法。TensorFlow 可以看作是使用數據流圖進行數值計算的庫。圖中的節點表示數學運算,而圖的邊表示多維數據數組(張量),它們將節點互連。 TensorFlow 圍繞構建和操作計算圖的基本思想構建,象征性地表示要執行的數值運算。這使得 TensorFlow 現在可以從 Linux 64 位平臺(如 Mac OS X)以及 Android 或 iOS 等移動平臺中利用 CPU 和 GPU。 這個新軟件包的另一個優點是它的可視 TensorBoard 模塊,它提供了大量有關如何監視和顯示算法運行的信息。在創建更好的模型的過程中,能夠測量和顯示算法的行為是非常重要的。我感覺目前許多模型都是通過一個小型的盲目過程,通過試錯來調優,明顯浪費資源,以及最重要時間。 ### TensorFlow 服務 最近 Google 推出了 TensorFlow 服務 [3],這有助于開發人員將他們的 TensorFlow 機器學習模型(即使如此,也可以擴展來服務其他類型的模型)投入生產。TensorFlow 服務是一個開源服務系統(用 C++ 編寫),現在可以在 Apache 2.0 許可下[在 GitHub ](http://tensorflow.github.io/serving/)上獲得。 TensorFlow 和 TensorFlow 服務有什么區別??在 TensorFlow 中,開發人員更容易構建機器學習算法,并針對某些類型的數據輸入進行訓練,TensorFlow 服務專門使這些模型可用于生產環境。我們的想法是開發人員使用 TensorFlow 訓練他們的模型,然后他們使用 TensorFlow 服務的 API 來響應來自客戶端的輸入。 這允許開發人員根據實際數據大規模試驗不同的模型,并隨時間變化,保持穩定的架構和 API。 典型的流水線是將訓練數據提供給學習器,學習器輸出模型,模型在被驗證之后準備好部署到 TensorFlow 服務系統。?隨著時間的推移和新數據的出現,改進模型,啟動和迭代我們的模型是很常見的。事實上,在 Google 的博文中 [4] 中,他們提到在谷歌,許多流水線都在持續運行,隨著新數據的出現,產生了新的模型版本。 ![TensorFlowServing](https://jorditorres.org/wp-content/uploads/2016/04/TensorFlowServing.png) 開發人員用來與 TensorFlow 服務進行通信的前端實現,基于 [gRPC](http://www.grpc.io/) ,這是一種來自 Google 的高性能開源RPC框架。 如果你有興趣了解 TensorFlow 服務的更多信息,我建議你先閱讀服務架構概述 [5] 部分,設置你的環境并開始閱讀基礎教程 [6]。 ### TensorFlow 的安裝 是時候做一些事情了。從現在開始,我建議你交替閱讀和在計算機上練習。 TensorFlow 有 Python API(以及 C/C++),需要安裝 Python 2.7(我假設任何閱讀本書的工程師都知道如何操作)。 通常,在使用 Python 時,應使用虛擬環境`virtualenv`。?`virtualenv`是一種工具,用于在同一臺計算機的不同部分中保持不同項目所需的 Python 依賴關系。如果我們使用`virtualenv`來安裝 TensorFlow,這將不會覆蓋需要 TensorFlow 的其他項目的現有 Python 包版本。 首先,如果尚未安裝`pip`和`virtualenv`,則應安裝,如下面的腳本所示: ``` # Ubuntu/Linux 64-bit $ sudo apt-get install python-pip python-dev python-virtualenv # Mac OS X $ sudo easy_install pip $ sudo pip install --upgrade virtualenv ``` `~/tensorflow`目錄中的環境`virtualenv`: `$ virtualenv --system-site-packages ~/tensorflow` 下一步是激活`virtualenv`。這可以按如下方式完成: ``` $ source ~/tensorflow/bin/activate # with bash $ source ~/tensorflow/bin/activate.csh # with csh (tensorflow)$ ``` 我們工作的虛擬環境的名稱,將從現在開始顯示在每個命令行的開頭。激活`virtualenv`后,你可以使用`pip`在其中安裝 TensorFlow: ``` # Ubuntu/Linux 64-bit, CPU only: (tensorflow)$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl # Mac OS X, CPU only: (tensorflow)$ sudo easy_install --upgrade six (tensorflow)$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.7.1-cp27-none-any.whl ``` 我建議你訪問此處提供的官方文檔,來確保你安裝的是最新版本。 如果運行代碼的平臺具有 GPU,要使用的包不同。我建議你訪問官方文檔,了解你的 GPU 是否符合支持 Tensorflow 所需的規范。運行 Tensorflow GPU 需要安裝其他軟件,所有信息都可以在下載和設置 TensorFlow [7] 網頁上找到。對于使用 GPU 的更多信息,我建議閱讀第 6 章。 最后,當你完成后,你應該按如下方式禁用虛擬環境: ``` (tensorflow)$ deactivate ``` 鑒于本書的介紹性質,我們建議讀者訪問上述官方文檔頁面,來查找安裝 Tensorflow 的其他方法的更多信息。 ### 我在 TensorFlow 中的第一個代碼 正如我在開始時提到的那樣,我們將通過很少的理論和大量練習來探索 TensorFlow 星球。開始吧! 從現在開始,最好使用任何文本編輯器編寫 python 代碼并使用擴展名`.py`保存(例如`test.py`)。要運行代碼,使用命令`python test.py`就足夠了。 為了獲得 TensorFlow 程序的第一印象,我建議編寫一個簡單的乘法程序;代碼看起來像這樣: ```py import tensorflow as tf a = tf.placeholder("float") b = tf.placeholder("float") y = tf.mul(a, b) sess = tf.Session() print sess.run(y, feed_dict={a: 3, b: 3}) ``` 在此代碼中,在導入 Python 模塊`tensorflow`之后,我們定義“符號”變量,稱為占位符,以便在程序執行期間操作它們。然后,我們將這些變量作為參數,調用 TensorFlow 提供的乘法函數。`tf.mul`是 TensorFlow 為操縱張量而提供的眾多數學運算之一。在這個時候,張量可以認為是動態大小的多維數據數組。 主要運算如下表所示: | 運算 | 描述 | | --- | --- | | `tf.add` | 加法 | | `tf.sub` | 減法 | | `tf.mul` | 乘法 | | `tf.div` | 除法 | | `tf.mod` | 模 | | `tf.abs` | 返回絕對值 | | `tf.neg` | 返回負值 | | `tf.sign` | 返回標志 | | `tf.inv` | 返回倒數 | | `tf.square` | 計算平方 | | `tf.round` | 返回最接近的整數 | | `tf.sqrt` | 計算平方根 | | `tf.pow` | 計算指數 | | `tf.exp` | 計算自然指數 | | `tf.log` | 計算自然對數 | | `tf.maximum` | 返回最大值 | | `tf.minimum` | 返回最小值 | | `tf.cos` | 計算余弦 | | `tf.sin` | 計算正弦 | TensorFlow 還為程序員提供了許多函數,來對矩陣執行數學運算。一些列在下面: | 運算 | 描述 | | --- | --- | | `tf.diag` | 返回具有給定對角線值的對角張量 | | `tf.transpose` | 返回參數的轉置 | | `tf.matmul` | 返回由參數列出的兩個張量的張量積 | | `tf.matrix_determinant` | 返回由參數指定的方陣的行列式 | | `tf.matrix_inverse` | 返回由參數指定的方陣的逆 | 下一步,最重要的一步是創建一個會話來求解指定的符號表達式。實際上,到目前為止,這個 TensorFlow 代碼尚未執行任何操作。我要強調的是,TensorFlow 既是表達機器學習算法的接口,又是運行它們的實現,這是一個很好的例子。 程序通過使用`Session()`創建會話來與 Tensorflow 庫交互;只有在我們調用`run()`方法時才會創建這個會話,這就是它真正開始運行指定代碼的時候。在此特定示例中,使用`feed_dict`參數將變量的值傳給`run()`方法。這里,相關代碼求解表達式,并且從顯示器返回 9 作為結果。 通過這個簡單的例子,我試圖介紹在 TensorFlow 中編程的常規方法,首先指定整個問題,并最終創建一個可以運行相關計算的會話。 然而,有時我們感興趣的是構造代碼的更多的靈活性,插入操作來構建某個圖,這些操作運行它的一部分。例如,當我們使用 Python 的交互式環境時,例如 IPython [8],就會發生這種情況。為此,TesorFlow 提供了`tf.InteractiveSession()`類。 這種編程模型的動機超出了本書的范圍。但是,為了繼續下一章,我們只需要知道所有信息都在內部保存在圖結構中,它包含所有操作和數據的信息。 該圖描述了數學運算。節點通常實現數學運算,但它們也可以表示數據輸入,輸出結果或讀/寫持久變量。邊描述節點與其輸入和輸出之間的關系,同時攜帶張量,即 TensorFlow 的基本數據結構。 將信息表示為圖允許 TensorFlow 知道事務之間的依賴關系,并異步并行地將操作分配給設備,當這些操作已經具有可用的相關張量(在邊緣輸入中指示)時。 因此,并行性是使我們能夠加速一些計算昂貴的算法的執行的因素之一,但也因為 TensorFlow 已經有效地實現了一組復雜的操作。此外,大多數這些操作都具有關聯的內核,這些內核是為特定設備(如 GPU)設計的操作的實現。下表總結了最重要的操作/內核 [9]: | 操作組 | 操作 | | --- | --- | | 數學 | 加,減,乘,除,指數,對數,大于,小于,等于 | | 排列 | 連接,切片,分割,常數,階,形狀,打亂 | | 矩陣 | MatMul,MatrixInverse,MatrixDeterminant | | 神經網絡 | SoftMax,Sigmoid,ReLU,Convolution2D,MaxPool | | 檢查點 | 保存,還原 | | 隊列和同步 | Enqueue,Dequeue,MutexAcquire,MutexRelease | | 流量控制 | 合并,切換,進入,離開,NextIteration | ### 顯示面板 Tensorboard 為了使其更加全面,TensorFlow 包含了名為 TensorBoard 的可視化工具來調試和優化程序的功能。TensorBoard 可以以圖形方式查看計算圖任何部分的參數和細節的不同類型的統計信息。 TensorBoard 模塊顯示的數據在 TensorFlow 執行期間生成,并存儲在跟蹤文件中,其數據來自摘要操作。在 TensorFlow 的文檔頁面 [10] 中,你可以找到 Python API 的詳細說明。 我們調用它的方式非常簡單:從命令行中使用 Tensorflow 命令啟動服務,它包含要跟蹤的文件作為參數。 ``` (tensorflow)$ tensorboard --logdir= ``` 你只需要使用`http//localhost:6006 /`從瀏覽器中 [11] 訪問本地套接字 6006。 名為 TensorBoard 的可視化工具超出了本書的范圍。對于 Tensorboard 如何工作的更多詳細信息,讀者可以訪問 TensorFlow 教程頁面中的 TensorBoard 圖形可視化 [12] 部分。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看