歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> 學習Linux

TensorFlow0.8源碼閱讀 -- 代碼目錄結構講解

TensorFlow0.8源碼閱讀 -- 代碼目錄結構講解


TensorFlow0.8源碼閱讀 -- 代碼目錄結構講解


TensorFlow0.8發布以來受到了大量機器學習領域愛好者的關注,目前其項目在github上的follow人數在同類項目中排名第一。作為google的第一個開源項目,TensorFlow的源碼結構較為清晰,相關的代碼注釋覆蓋較全。本文首先從代碼結構入手,分析TesnsorFlow的各個模塊構成。

根目錄結構的相關介紹

以下是TensorFlow項目根目錄下的文件結構(目前以TensorFlow-0.8為例)
這裡寫圖片描述
以下是對根目錄下的幾個核心文件和目錄的相關介紹:

  • 目錄tensorflow 該目錄下存放著tensorflow的核心代碼
  • 目錄google 該目錄下存放著protobuf的相關代碼,該目錄通過在git clone 命令後添加 --recurse-submodules 可以下載得到。protobuf主要用於tensorflow中的各模塊通信。
  • 目錄third_party/tools/util 目前這三個目錄中的文件較少,還未看出其相關作用,可能會在接下來的項目發展中變得更加完善。
  • 文件configure 該文件用於配置tensorflow的安裝環境,運行該文件並完成tensorflow的安裝環境配置後,運行bazel build -c opt //tensorflow/cc:tutorials_example_trainer 即可完成代碼的編譯工作。( 需要先安裝bazel)

由於目錄google 的作用僅為提供protobuf的通信支持,當前我們主要對目錄tensorflow的相關結構進行分析。


tensorflow目錄結構的相關介紹

以下是目錄tensorflow 下的相關目錄和文件
這裡寫圖片描述

以下是對該目錄下的幾個重要目錄的簡單介紹:

  • 目錄core 該目錄為tensorflow的C++源碼的核心存放地點,接下來我們會對該目錄中存放的各個模塊進行簡要介紹。
  • 目錄python 該目錄下存放了tensorflow使用python編寫的相關代碼,個人感覺該部分代碼主要是使用python封裝了相關的機器學習算法,但最終的計算操作是通過調用目錄core 中的C++邏輯實現的。這樣做的好處是利用了python較方便的編程特性和C++較高效的執行效率。
  • 目錄tensorboard tensorborad是tensorflow中非常有特色的一個模塊,該模塊可以用於生成模型訓練中實時生成圖表,用於監控模型的訓練程度。
  • 目錄models 該目錄下存放這多個使用pyton實現的模型實例。
  • 目錄contrib 該目錄下存放有其他項目貢獻者添加的相關貢獻代碼,由於tensorflow受關注程度較高,目前該目錄正急劇膨脹。
  • 其他

目前來看tensorflow中很多模塊正處於剛開始起步的階段,很多邏輯還有待完善(如當前支持的模型較少、很多方法還未實現等)。
本文接下來會對核心目錄core 中的文件結構進行簡要的介紹。

core目錄結構的相關介紹

core目錄是tensorflow源碼中最核心的一個目錄,其代碼邏輯主要為C++開發實現。
以下為該目錄的代碼組織結構
這裡寫圖片描述

以下是對該目錄下的幾個主要模塊(目錄)的功能介紹

  • 目錄common_runtime 該目錄下包含了tensorflow中session執行的通用邏輯流程。
  • 目錄distributed_runtime tensorflow 與分布式相關的執行邏輯。
  • 目錄graph tensorflow圖相關操作的邏輯。由於tensorflow中的數據計算本質上是一個圖狀結構的計算流程,該過程中存在將圖進行切分並且並行化執行的可能性。該目錄下的代碼邏輯即為對圖數據進行結構化定義並進行拆分的相關內容。
  • 目錄framework 該目錄下對tensorflow進行計算過程中的通用組件進行了定義和實現。
  • 目錄kernels 對tensorflow中各個單步操作的具體實現。 該目錄中共有約470個文件,其中414個文件和op相關,該目錄下包含了大量的tensorflow中單步操作的實現方式。(如Variable())
  • 目錄ops 對kernel/ 下的op進行注冊和對外聲明。
  • 目錄models 實現了幾個tensorflow支持的計算模型,該部分代碼由python實現。
  • 目錄client/public tensorflow對外api的定義和實現
  • 目錄util/lib 一些公用的調用方法。
  • 目錄protobuf tensorflow下各個模塊間進行數據傳輸的數據結構定義,通過proto進行配置實現。
  • 目錄user_ops 用戶可進行編寫自己的op並添加到該目錄。

本文永久更新鏈接地址:

http://xxxxxx/Linuxjc/1145168.html TechArticle

Copyright © Linux教程網 All Rights Reserved