【TensorFlow使用教程】1 環境搭建

  1、TensorFlow主要依賴包——Protocol Buffer & Bazel網絡

  1. Protocol Buffer函數

  首先要弄清三個概念:工具

  • 結構化數據:指擁有多種屬性的數據,例如用戶信息能夠表示爲
    name:張三
    id:1234
    email:zhangsan@abc.com

 

  這樣的用戶信息就是一個結構化數據,name、id和email都是這個數據的屬性。測試

  • 序列化:結構化的數據持久化或進行網絡傳輸時,須要先進行序列化。序列化就是將結構化的數據變成數據流的格式,即變成字符串。
  • 結構化數據的處理:將結構化數據序列化,並從序列化以後的數據流中還原出原來的結構化數據。

  Protocol Buffer就是用來處理結構化數據的。ui

  另外兩種常常被用來處理結構化數據的工具時XML和JSON,它們和Protocol Buffer的主要區別以下spa

  XML、JSON Protocol Buffer
序列化結果 可讀字符串 二進制流
還原操做 序列化結果包含格式信息,無需其餘信息便可還原 需事先定義數據格式,還原時也需使用這個定義好的格式。

  因爲Protocol Buffer在序列化時可根據須要選定數據類型,它序列化出來的數據通常比XML格式小,解析時間也要快許多。code

  Protocol Buffer定義數據格式的文件通常保存在.proto文件中,如blog

message user{
    optional string name = 1
    required int32 id = 2
    repeated string email = 3
}

  其中,每個message表明了一類結構化的數據,它的裏面定義了每個屬性的類型和名字。資源

  屬性的類型能夠是:字符串

  • 布爾型
  • 整型
  • 實數型
  • 字符型等基本類型
  • 另外一個message

  屬性的設置:

  • repeated 屬性是能夠重複的,即屬性的取值能夠是一個列表
  • optional 屬性是可選的,即屬性的取值能夠爲空

  2. Bazel

  一個自動化構建工具,用於對項目空間(workspace)中的程序進行編譯。

  workspace能夠理解爲一個文件夾,它包含了編譯一個軟件所須要的源代碼以及輸出編譯結果的軟鏈接(symbolic link),其根目錄的基本結構以下:

  • WORKSPACE文件,定義了對外部資源的依賴關係。能夠是空文件。
  • BUILD文件,Bazel經過它來尋找須要編譯的目標。它採用一種相似Python的語法來指定每個編譯目標的輸入、輸出和編譯方式,也就是說,和通常的開放式編譯工具不一樣,Bazel的編譯方式是事先定義好的。
  • 程序源碼的py文件(以Python爲例)。

  Bazel對Python支持的編譯方式只有如下三種:

  • py_binary 將Python程序編譯爲可執行文件
  • py_library 將Python程序編譯爲庫函數供其餘py_binary或py_test調用
  • py_test 編譯Python測試程序

  舉例見書p28-29。

相關文章
相關標籤/搜索