1. 程式人生 > >Tensorflow程式碼目錄組織

Tensorflow程式碼目錄組織

Tensorflow專案組織結構

Tensorflow/core目錄包含了TF核心模組程式碼。

  •         public: API介面標頭檔案目錄,用於外部介面呼叫的API定義,主要是session.h 和tensor_c_api.h。
  •         client: API介面實現檔案目錄。
  •         platform: 主要是隔離不同的作業系統,包含了不同OS系統相關介面檔案,如file system, env等,降低了跨平臺的難度。
  •         protobuf: tensorflow前後端主要是使用了protocol buffer協議定義。在原始碼目錄中、最主要的是master_service.proto和work_service.proto兩個檔案。分別聲明瞭master和worker的服務藉口。
  •         common_runtime: 公共執行庫,包含session, executor, threadpool, rendezvous, memory管理, 裝置分配演算法SimplePlacer,對device的定義,記憶體分配演算法BFC(best-fit with coalescing)。
  •         distributed_runtime: 分散式執行模組,如rpc session, rpc master, rpc worker, graph manager。
  •         framework: 實現了tf的基本執行方式。其中包含tensor等資料結構,還包括資料型別,資源管理器以及通訊機制等資訊。運算元的實現中採用了註冊
    機制。
  •         graph: 實現的計算圖模型的資料結構,包括邊edge,節點node,圖graph等。以及圖的遍歷演算法以及佈置節點所需要的代價模型。
  •         kernels: kernels是op的底層實現,op是kernels的上層抽象。對於不同的計算平臺(gpu\cpu\tpu等)有不同的實現。比如對於cpu來說,數值計算會基於Eigen庫。Eigen庫是一個c++編寫的模板庫,支援整數、複數、浮點數,使用模板程式設計、可以為特殊資料結構提供矩陣操作。而gpu的運算則是基於cuda完成的。
  •         lib: 公共基礎庫,如gif、gtl(google模板庫)、hash、histogram等。
  •         ops: 基本ops運算,ops梯度運算,io相關的ops,控制流和資料流操作
  •         Tensorflow/stream_executor目錄是平行計算框架,由google stream executor團隊開發。
  •         Tensorflow/contrib目錄是contributor開發目錄。
  •         Tensroflow/python目錄是python API客戶端指令碼。
  •        Tensorflow/tensorboard目錄是視覺化分析工具,不僅可以模型視覺化,還可以監控模型引數變化。
  •         third_party目錄是TF第三方依賴庫。
  •         eigen3: eigen矩陣運算庫,TF基礎ops呼叫
  •         gpus: 封裝了cuda/cudnn程式設計庫