2.1 TensorFlow的主要依賴包
TensorFlow的兩個主要依賴包:Protocol Buffer和Bazel醉者。
2.11Protocol Buffer
Protocol Buffer是Google開發(fā)處理結(jié)構(gòu)化數(shù)據(jù)的工具祝闻。這里的結(jié)構(gòu)化數(shù)據(jù)是擁有多種屬性的數(shù)據(jù)客峭。比如name,ID烦秩,Email等屬性懂讯。類似的數(shù)據(jù)處理工具有XML和Json顺献。
Protocol Buffer和xml或者Json格式的數(shù)據(jù)有以下區(qū)別:
- Protocal Buffer序列化之后得到的數(shù)據(jù)不是可讀的字符串,而是二進制流
- XML或Json格式的數(shù)據(jù)信息都包含在序列化的數(shù)據(jù)中定嗓,Protocol Buffer要定義好數(shù)據(jù)的格式(Schema)蜕琴。還原的時候需要這個格式。
因為有這樣的差別宵溅,Protocol Buffer序列化出來的數(shù)據(jù)要比XML格式的數(shù)據(jù)小3到10倍凌简,解析時間要快20到100倍。
Protocol Buffer定義的數(shù)據(jù)保存在.proto文件中层玲。每一個message代表一類結(jié)構(gòu)化的數(shù)據(jù)号醉。
message user{
optional string name = 1反症;//可選的
required int32 id = 2; //必須的
repeated string email = 3畔派; //可以重復(fù)的
}
2.1.2 Bazel
Bazel是Google開源的自動化構(gòu)建工具铅碍,相比Makefile,Ant或者Maven线椰,Bazel在速度胞谈,可伸縮性,靈活性憨愉,以及對語言和平臺的支持上更加出色烦绳。Bazel的安裝向?qū)?/a>。
Bazel包含項目空間(workspace)配紫,一個項目空間里面可以有一個或多個應(yīng)用径密。需要有一個WORKSPACE文件,該文件定義了對外部資源的依賴關(guān)系躺孝。Bazel通過BUILD文件來找到需要編譯的目標享扔。
Bazel對Python程序的支持的編譯方式有三種:py_binary(編譯Python為可執(zhí)行文件),py_library(將Python編譯為函數(shù)庫)和py_test(編譯Python測試程序).
2.2 TensorFlow安裝
2.2.1使用Docker安裝
Docker是新一代的虛擬化技術(shù),它可以將TensorFlow以及TensorFlow的所有依賴關(guān)系封裝到Docker鏡像中植袍,簡化安裝過程惧眠。
Docker的安裝如下:installation